簡體   English   中英

使用VS2012創建可重新分發的C / C ++ DLL

[英]Creating redistrubutable C/C++ DLLs with VS2012

我有一個使用vc.mak makefile構建解決方案的VS2012 C ++項目。 我建立了一個.exe和.dll,它們或多或少都相同(exe具有main()大約是唯一的區別)。

我需要做些什么才能使這兩段代碼可以在Windows的多個版本上運行? 我正在使用Windows 8.1 Pro,當然可以運行exe並使用dll。 我構建了一個新的Win8.1 Pro VM,發現嘗試運行.exe,但缺少MSVCR110.dll文件,因此我將其復制並運行。 之后,我的共享庫也可以使用了。

我將項目的整個“安裝”文件夾復制到同事的Windows 8框中,Exe將運行,但無法加載.dll

我需要復制什么才能使dll在任何Windows機器上運行?

選擇其中之一,您應該選擇第三個選項:

  • 我計算機上的某些計算機游戲在其可執行文件存在的目錄中只有msvcr * .dll,因此您可以選擇此方法-只需將DLL與可執行文件一起提供即可。 您可以在%WINDIR%\\ System32或%WINDIR%\\ SysWOW64中找到該DLL,或者從復制到其目錄中的任何程序中“借用”該DLL,並希望該程序的作者不對其進行修改。
  • 另一個選擇是使用/ MT開關而不是/ MD來編譯該程序(或者在調試版本中使用MTd而不是MDd)來編譯該程序,但是我對makefile沒有經驗,所以我不能說這樣做有多難。 使用這種方法,運行時庫將靜態鏈接到您的可執行文件-但要准備好使可執行文件具有更大的大小。
  • 第三種選擇是創建一個安裝程序,用於同時安裝您的應用程序和Visual Studio 2012的Visual C ++可再發行組件-或手動下載並安裝該可再發行組件。

是Microsoft的C ++應用程序部署指南,有點腫,但值得一看。

您可以使用便捷的Dependency Walker工具找出您的應用程序所依賴的DLL。 通常,使用動態運行時構建時,它們至少是msvcr * .dll(Microsoft C運行時)和ms​​vcp * .dll(Microsoft C ++運行時), 此處是更詳細的列表。 要部署Microsoft運行時,可以將正式的Visual C ++可再發行組件安裝程序(VCRedist_x86.exe)與應用程序一起提供。 或者,對於從2010年開始的Visual C ++,您可以將DLL放置在帶有可執行文件的目錄中,對於以前的版本,此過程要復雜一些

為了能夠在Windows XP上運行應用程序,請確保在項目屬性的“ General選項卡上選擇Platform Toolset具有XP支持的Platform Toolset (但即使這樣,運行時也不會在SP2之前的系統上啟動)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM