2011-05-06 64 views
0

如何捕獲依賴DLL中缺少的DLL?在Win32應用程序中捕獲DLL依賴關係

例如: 應用加載一個DLL A.

一個DLL加載DLL B.

所以,如果DLL B是不可用,應用程序只顯示我:找不到DLL中的。

任何提示,我可以找到解決方案?

目前我使用dependency-walker來解決這個問題,但是我需要在應用程序內部做一些事情,以便客戶不會在DLL丟失時啓動外部工具。

回答

1

我不完全清楚你的用例在這裏,但你的應用程序不能調用LoadLibrary來檢查在啓動「外部工具」之前DLL是否可用,並且如果它失敗報告DLL ) 缺失?

+0

這就是我如何做到這一點。與Jay的回答基本相同,但對LoadLibrary()的調用是關鍵。 [看到這裏,如果A無法加載B,您將從LoadLibrary獲得一個NULL](http://msdn.microsoft.com/en-us/library/ms684175(v = vs.85).aspx) – 2011-05-06 21:18:30

0

您可以顯式加載DLL。如果你有一個缺失的依賴項,你會得到一個錯誤/異常。

也許你可以靜態編譯DLL中的代碼,這樣就消除了這個問題?

如果你在使用「DLL Hell」,你可能也會把DLL放在文件系統中,所以windows會加載你想要的DLL。

+1

'你可能也可以把DLL放在文件系統中 - 對不起,你在哪裏保存它們? – sehe 2011-05-06 20:35:05