2

我有一個C++項目,我在VS2008中構建。該項目還鏈接到使用VS2005構建的庫(DLL + Import lib),從而加載VS2005調試CRT庫(一切都是調試構建)。VS2005&VS2008並排顯示問題

當試圖運行VS2008中構建的這個可執行文件時,由於VS2005 DLL找不到調試CRT庫,我得到加載時的錯誤,即使我已經安裝了VS2005 SP1。我也檢查過Windows更新,所以我不確定我還能做些什麼。

如何診斷此問題?我查看了Windows中的事件查看器,發現它無法找到調試VC80 CRT庫,但這就是我所知道的。這裏有一個版本不匹配,我想我只是不知道如何解決它,因爲我不太瞭解這個清單/並行的東西。

我正在構建的操作系統是Windows XP 32位。我已經安裝了VS2008 SP1和VS2005 SP1(因此所有調試清單/ CRT dll應該可用)

+0

我是否正確理解這一點:您有一個使用VS2k8動態庫的可執行文件A,以及一個使用VS2k5動態庫的DLL B?解放軍不匹配可能不會飛。 – user7116 2012-04-04 02:06:06

+0

@sixlettervariables:這是正確的。但它應該可以工作(並且可以在Windows 7機器上運行)。但我試圖設置我的環境,並讓它在Windows XP機器上運行(相同的代碼,相同的DLL),但它不起作用。我已經在Windows XP上使用它,但很難獲得一致的結果。這似乎是Windows更新中最細微的差異導致一切都中斷。 – 2012-04-04 02:18:17

+1

我有類似的設置很多麻煩。最好包括原始所需的DLL(不是完整的CRT),並且最好從源頭重建在同一個CRT中。 – MPelletier 2012-04-04 02:20:44

回答

0

學會檢查或創建或檢查適當的assembly manifests

Here is more info once you get that done.

在Windows XP中,如果外部清單是存在於應用程序的本地文件夾,操作系統加載器使用該清單,而不是一個清單嵌入二進制文件內。在Windows Server 2003和更高版本的Windows上,情況正好相反 - 外部清單被忽略,並且存在時使用嵌入式清單。