今天我構建了我的應用程式并使用 QtIF 打包了安裝程式。它在我的電腦上運行良好,但抱怨msvcp140_1.dll在另一臺電腦上丟失。
然后我運行find . -iname "msvcp140_1.dll"并在我的計算機上發現超過五個不同的,我檢查了 md5sum。
然后我花時間在另一臺計算機上嘗試所有這些,似乎一切正常。不再抱怨缺少 DLL。
我應該如何在 DLL 之間進行選擇?隨便挑一個似乎太容易了。
有沒有辦法檢查 DLL,檢查版本?
我相信 DLL 是我的應用程式中包含的另一個二進制檔案的依賴項,而不是 QtIF 未能包含它。
uj5u.com熱心網友回復:
從您的安裝程式呼叫 MS Redist 安裝程式。這可以安靜地完成,以便最終用戶不會注意到它。
- 找到
vcredist_x64.exe檔案(或vcredist_x3232 位應用程式),將其添加到您的安裝程式中, - 讓它解壓到“TEMP”檔案夾
- 然后
vcredist_x64.exe /quiet在安裝結束時呼叫。
這有幾個優點:
- 您肯定會將所有需要的檔案復制到用戶計算機上。
- 如果 Microsoft 發布了新版本的運行時庫并且它們已經在您的用戶計算機上,您的代碼將使用更新的版本,其中可能包含錯誤修復。
- Windows 更新也可能會更新庫。
這就是說,它是可以復制的DLL檔案本身,而是你應該確保a)您選擇適合的B)他們來自一個值得信賴的地方,也就是你的VS安裝檔案夾C)駐留在同一個目錄下的可執行-否則你會遇到清單問題。
您可能想要直接包含 DLL 的原因是您想要減小安裝程式的整體大小。
我們用我們的產品做了幾年,但最終放棄并簡單地使用了. vcredist_x64.exe,即使這將安裝程式二進制檔案的大小增加了幾 MB。但從長遠來看,這是最簡單的方法。
我認為(不確定),msvcp140_1.dll 是 VS 2019 運行時的附加 DLL。VS 2017 運行時不需要這個,但新的需要。
uj5u.com熱心網友回復:
非可再發行方法是運送DLL的來與你的編譯器,即建立可執行檔案的編譯器。畢竟,DLL 將被加載到與您的 EXE 相同的行程中。這些應該匹配是合乎邏輯的。
您會在其中找到那些 DLL \Program Files*\Microsoft Visual Studio *\VC\Redist
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/409025.html
標籤:
