我有一個Visual Studio 2008(SP1)程序,調試版本,32位,似乎無法找到調試運行時DLL(多線程調試DLL)。調試版本找不到調試運行時DLL
但是,瘋狂的事情是,depend.exe顯示必需的DLL作爲存在(也缺少)。它實際上看起來像試圖加載這些DLL兩次。
以下是來自depend.exe的屏幕截圖的鏈接,顯示了我正在談論的內容 - 分析作爲解決方案一部分的庫。
當我啓動程序時,我得到「程序無法啓動,因爲MSVCP90D.dll從您的計算機中丟失,請嘗試重新安裝程序來解決此問題。」
如果我進入sxs目錄並將「丟失」DLL複製到與二進制文件相同的目錄中,程序將運行。
應用程序清單指定了正確的DLL版本(由depend.exe找到它們證明)。我已經檢查過該版本的運行時間的清單,並且對於我未經訓練的眼睛來說它看起來合法。
該二進制文件本身顯示與鏈接圖像中檢查的DLL相同的問題,但也與MSVCP90D.DLL丟失(並存在)相同。
我已經嘗試過建立內部/外部清單,關閉和打開增量鏈接,正如其他地方所建議的,都無濟於事。我會嘗試鏈接一個非DLL運行時,但是我使用的庫在許多解決方案中共享,所以改變它們的構建方式並不是一個真正的選擇(除非當然,這是唯一的解決方案到一個已知的問題,我的谷歌搜索沒有出現)。
我試過運行sxstrace,但是大多數時候輸出是空的(!),當它不是空的時候它不顯示錯誤。
我試過使用windbg,但沒有得到任何好處,因爲我對該工具沒有特別的經驗,也不確定我在找什麼。
我在64位Windows 7上運行。我早期的想法之一是,在我的盒子上安裝了VS2005,2008和2010都導致了一些奇怪的問題,但我沒有發現證據支持這種假設。
(PS貌似相似的問題,因爲這msvcp90d.dll is missing msvcr90d.dll據我可以看到實際上並沒有得到解決,而且還提到了C# - 我的項目是純C++)。
您是否在運行該程序的計算機上運行該程序?您安裝VS2005,2008和2010的順序是什麼? – cup
是,在一臺機器上構建並運行。按照時間順序安裝。 – Rodyland