[英]How do you pack a visual studio c++ project for release?
我想知道如何制作一個包含所有必要 dll 文件到 .exe 的發布版本,以便程序可以在非開發機器上運行,而無需在目標機器上安裝 microsoft 可再發行組件。
如果不這樣做,您會收到錯誤消息,指出應用程序配置不正確並需要重新安裝。
您需要將所有項目的運行時庫(在 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.