簡體   English   中英

您如何打包要發布的 Visual Studio C++ 項目?

[英]How do you pack a visual studio c++ project for release?

我想知道如何制作一個包含所有必要 dll 文件到 .exe 的發布版本,以便程序可以在非開發機器上運行,而無需在目標機器上安裝 microsoft 可再發行組件。

如果不這樣做,您會收到錯誤消息,指出應用程序配置不正確並需要重新安裝。

  1. 選擇項目 -> 屬性
  2. 選擇配置 -> 常規
  3. 在應如何鏈接 MFC 的框中,選擇靜態鏈接它。
  4. 選擇鏈接器 -> 輸入。 Additional Dependencies 下,添加您需要應用靜態鏈接的任何庫。

您需要將所有項目的運行時庫(在 C/C++ -> 代碼生成下)設置為靜態鏈接,這與以下默認構建配置相關:

  • 多線程調試/發布
  • 單線程調試/發布

與這些庫的“DLL”版本相反。

即使你這樣做,根據你使用的庫,你可能必須安裝一個合並模塊/框架/等。 這取決於您的依賴項的靜態 LIB 版本是否可用。

請注意, Microsoft 不建議您將運行時靜態鏈接到您的項目中,因為這會阻止 Windows 更新為其提供服務以修復關鍵的安全錯誤。 如果您在主 .exe 和 .dll 文件之間傳遞內存,也存在潛在問題,就好像這些靜態鏈接運行時一樣,您最終可能會遇到 malloc/free 不匹配問題。

您可以在可執行文件中包含 DLL,而無需將它們編譯到 .exe 中,也無需運行 redist 工具 - 這就是我所做的,它似乎工作正常。

唯一美中不足的是,如果您要為范圍廣泛的 Windows 版本分發文件,則需要將文件包含兩次 - 較新的操作系統需要清單定義目錄中的文件,而較舊的操作系統需要程序目錄中的所有文件.

你會尋找靜態鏈接(而不是動態鏈接)

我不確定有多少 MS 可再發行組件靜態鏈接。

如果您想找出您的目標機器缺少哪個 dll,請使用 MSDev 附帶的depends.exe,但也可以在此處找到。 在幾台目標機器上進行測試應該會告訴您需要將哪些 dll 打包到您的應用程序中。

您應該使用靜態鏈接並在附加依賴項下添加您需要的所有庫。

暫無
暫無

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

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