如何捕獲依賴DLL中缺少的DLL?在Win32應用程序中捕獲DLL依賴關係
例如: 應用加載一個DLL A.
一個DLL加載DLL B.
所以,如果DLL B是不可用,應用程序只顯示我:找不到DLL中的。
任何提示,我可以找到解決方案?
目前我使用dependency-walker來解決這個問題,但是我需要在應用程序內部做一些事情,以便客戶不會在DLL丟失時啓動外部工具。
如何捕獲依賴DLL中缺少的DLL?在Win32應用程序中捕獲DLL依賴關係
例如: 應用加載一個DLL A.
一個DLL加載DLL B.
所以,如果DLL B是不可用,應用程序只顯示我:找不到DLL中的。
任何提示,我可以找到解決方案?
目前我使用dependency-walker來解決這個問題,但是我需要在應用程序內部做一些事情,以便客戶不會在DLL丟失時啓動外部工具。
我不完全清楚你的用例在這裏,但你的應用程序不能調用LoadLibrary來檢查在啓動「外部工具」之前DLL是否可用,並且如果它失敗報告DLL ) 缺失?
您可以解析IAT並實施algorithm similar with the one used by LoadLibrary來檢查是否會找到dll。開始實施這個是ImageNtHeader
這就是我如何做到這一點。與Jay的回答基本相同,但對LoadLibrary()的調用是關鍵。 [看到這裏,如果A無法加載B,您將從LoadLibrary獲得一個NULL](http://msdn.microsoft.com/en-us/library/ms684175(v = vs.85).aspx) – 2011-05-06 21:18:30