2013-03-04 31 views
2

這應該是一個簡單的問題,但我偶然發現它。環境是Windows 7上的Visual Studio 2008,該機器還安裝了vs2010,vs2012。 (我必須安裝幾個VS,因爲各個項目使用不同的版本)如何跟蹤使用的DLL(是否所謂的DLL地獄?)

我有一個簡單的應用程序使用一些3-DLL。 1)。當應用程序從Vs啓動時,它是可以的。 2)。當我複製到執行文件中的DLL文件,並從資源管理器中啓動它,應用程序崩潰的C++庫

喜歡的東西: 計劃:xxx.exe 文件:C:\ Program Files文件\微軟的Visual Studio 9.0 \ VC \包括\ vector Line:779 表達式:載體下標超出範圍

3)。我打開了一個命令行,並在PATH環境變量之前添加了「Visual Studio 9.0」和「Visual Studio 9.0 \ vc \ bin」,並啓動了應用程序,它也崩潰了。

我已附加到手動啓動/崩潰的過程,並將其與模塊和PATH環境的Vs IDE lanuched過程進行了比較,它似乎相同....我很沮喪。

有什麼建議嗎?先謝謝了。


我剛纔發現原因。在Visual Studio中,有一個「調試|」工作目錄「設置,它默認是項目目錄。雖然我複製了所有的DLL,但我錯過了一些配置文件。這是應用程序邏輯錯誤。

+0

現在..即最近10年,至少..它是建議有一個安裝程序爲您的.exe,而不是依賴於DLL的複製。複製DLLs確實會讓你進入DLL地獄。 – 2013-03-04 09:52:34

+0

@claptrap安裝程序並不能真正解決任何問題。它也必須複製DLL。你需要知道你需要哪些庫,以及把它們放在哪裏。 – 2013-03-04 10:15:45

+1

大衛赫芬南說。另外,安裝程序僅解決實際問題並引入可能失敗的另一個元素。對於每一個垃圾軟件都會附帶一個垃圾安裝程序,它會將不兼容的DLL版本複製到系統文件夾(並且不會詢問覆蓋文件),這是Windows爲什麼給予「這種sux」體驗的主要原因之一用戶數十年。 – Damon 2013-03-04 12:11:49

回答

0

'向量下標超出範圍'問題似乎更多來自您的代碼而不是DLL依賴項問題。但是,請確保引用正確版本的DLL - 調試/發佈。

+0

我再次遇到崩潰,似乎是這個問題。 – Raymond 2013-03-11 16:52:20

3

我會推薦使用Dependency Walker來調試依賴性問題。

您可以在靜態模式或動態模式下(從配置文件菜單中)使用它來準確診斷加載程序在運行時正在執行的操作。後一種模式聽起來像你在找什麼。