簡體   English   中英

如何確定我的程序需要運行哪些c ++可再發行組件?

[英]How do I determine which c++ redistributables my program needs to run?

是否有可能我需要為vs2012和vs2010安裝vcredist?

我剛剛遇到一個錯誤,我的應用程序無法加載.dll,並且在我進行了無關的安裝后突然開始工作,這促使我猜測它必須安裝了一個更老的vcredist來修復問題。 但是我確定我正在使用c ++ 11功能。

部署本身就是一項工作。 我討厭它,我討厭你在Windows上編寫安裝的方式。 ......所以現在感覺好多了......

你只需要一個vcredist。 鏈接器決定將您的程序鏈接到的那個。 如果您安裝了“Windows SDK”,您將在以下位置找到實際的redist:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86

如果您安裝所有更新,包括不重要的更新,Microsoft將更新該文件夾中的redist!

也許你有一個不想運行的可執行文件,你需要依賴walker 一個工具,非常有用,微軟必須從Visual Studio中刪除它。 下載程序並在其中打開您的exe。 你不需要了解真正發生的事情。 只要在打開過程中沒有出現Dialog,即使底部窗口中有感嘆號,一切也都可以。 如果對話框出現類似“無法解決”的內容而不是在底部窗口中查看。 通常現在在較低的窗口中有類似“msvcr.dll”或“msvcr100.dll”或“msvcr110.dll”的內容。 如果它在擴展名之前包含“d”,如“msvcr100d.dll”,則可執行文件在調試模式下編譯,您的旅程將在沒有安裝編譯器的系統上結束。 如果沒有,該名稱告訴您需要哪個vcredist:

msvcr100 = VS 2010 redist (32bit) (64bit)

msvcr110 = VS 2012 redist (32 / 64bit?)

有時它不是msvcr但它始終以“ms”開頭。 當然程序會告訴你每個缺少的dll,不僅僅是微軟和dll中的哪個命令被使用。 這有時非常有用。 您必須對可執行文件夾中的每個dll執行此操作,因為它們也可能具有不可解析的依賴項。
回到你的第一個問題。 您的程序只能鏈接到msvcr100或msvcr110,而不能同時鏈接到兩者,這就是每個可執行文件只需要一個vcredist的原因。 如評論中所述,第三方DLL可能會使用不同的msvcp版本。 所以,是的,你必須搜索你使用的所有DLL,你必須安裝兩個vcredist。

PS:總是至少有兩個,msvcr和msvcp。

我解決了這個問題如下(在Windows 7上):

  1. 我試圖加載庫,但它顯示“應用程序無法啟動,因為它的並排信息不正確”。
  2. 我打開“計算機管理”窗口:開始 - >右鍵單擊計算機 - >管理。
  3. 在“計算機管理”窗口中,我選擇了“事件查看器” - >“Windows日志” - >“應用程序”。
  4. 對應於該錯誤的日志表示未找到某個版本的Microsoft.VC90.CRT的DLL。 在我的情況下,版本是9.0.30729.6161,在谷歌搜索它顯示我需要從這里安裝一個“不尋常”的可再發行版本。

依賴性walker對我沒有幫助(它只是通過報告不必要的依賴關系而混淆了我)。

如果你想知道需要哪些運行時,可以嘗試在github( https://github.com/lucasg/Dependencies )上使用lucasg中的“Dependencies”工具,該工具適用於像win10這樣的現代系統。

你只需要在依賴樹中查找MsVcR##.dll o VcRuntime###.dll (其中#代表一個數字)。

HTH

PS:我們多年來一直使用的老忠實的“依賴性步行者”似乎無法處理新的操作系統處理延遲依賴關系的方式,將它們標記為“缺失”,而它們不會丟失,只是延遲加載一種它不知道的方式......

如果您的操作系統是Vista或更高版本(不是XP),請使用內置的SxStrace.exe生成一個日志,其中包含正在加載的DLL以及需要它們的模塊。 它將清楚地顯示您是否正在加載多個CRT DLL版本,以及DLL(第三方或否)。

VS2012可再發行組件被放入,例如“C:\\ Program Files(x86)\\ Microsoft Visual Studio 11.0 \\ VC \\ redist”。

- 大衛

暫無
暫無

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

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