我想問一下,在應用程序運行時,是否有某種方法可以檢測包含在我的應用程序中的DLL中的缺失函數。我知道使用HMODULE導入函數manualy的可能性,並在調用此函數時檢查它,但我不想以這種方式解決每個函數調用。想法是用一些try-catch塊或類似的東西來覆蓋函數調用,這不會導致應用程序崩潰。任何解決方案謝謝。缺少dll函數檢測
1
A
回答
0
您可以嘗試調用該函數,如果函數不存在,該函數將生成EntryPointNotFoundException。例如(VB.NET):
Dim MissingFunction as Boolean = False
Try
TheFunction()
Catch ex As System.EntryPointNotFoundException
MissingFunction = True
End Try
0
根據MSDN(https://msdn.microsoft.com/en-us/library/1c9e046h.aspx),在C/C++與MSVC的編譯器,你可以做這樣的事情:
#include <windows.h>
#define FACILITY_VISUALCPP ((LONG)0x6d)
#define VcppException(sev,err) ((sev) | (FACILITY_VISUALCPP<<16) | err)
const DWORD LIB_NOT_FOUND = VcppException(ERROR_SEVERITY_ERROR, ERROR_MOD_NOT_FOUND);
const DWORD FUNC_NOT_FOUND = VcppException(ERROR_SEVERITY_ERROR, ERROR_PROC_NOT_FOUND);
__try
{
MyDLLFunction();
}
__except(GetExceptionCode() == LIB_NOT_FOUND || GetExceptionCode() == FUNC_NOT_FOUND
? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
printf("library or function not found\n");
}
相關問題
- 1. 網絡測試 - 缺少DLL
- 2. C#DLL缺少公共函數
- 3. NRefactory缺少dll
- 4. VB6缺少DLL
- 5. 缺少pthreadGC2.dll
- 6. OpenCV - 缺少dll?
- 7. 檢測缺少方法
- 8. 檢測缺少的數學表達式
- 9. MSIE瀏覽器檢測:缺少基數?
- 10. PHPUnit的未檢測缺少參數
- 11. 如何檢測MSVCR120.dll與Java項目缺少
- 12. 在Karma測試中缺少函數
- 13. 缺少libgcc_s_dw2-1.dll
- 14. .NET/Silverlight缺少DLL
- 15. 錯誤 - 缺少DLL
- 16. 函數缺少參數
- 17. TFS 2015 SDK缺少Microsoft.WITDataStore64.dll
- 18. 缺少的.dll文件C++
- 19. LoadLibrary ...失敗。缺少dll
- 20. 64位缺少dll Win
- 21. System.Web.Abstractions DLL缺少HttpPostedFileBase類
- 22. QT中缺少Kernel32.dll
- 23. Visual Studio 2010中:DLL缺少
- 24. 缺少fireball.docking dll引用
- 25. 在Azure函數應用程序中缺少DLL
- 26. 檢測缺少子!那種!地圖!等
- 27. 的Xcode 8檢測到缺少約束
- 28. PHP中缺少Session_start函數
- 29. PHP缺少mb_strpos函數?
- 30. DialogPreference缺少構造函數
這通常是非常容易診斷,你的程序不會啓動。所以沒有必要去測試*,而你正在運行,你*是*運行的事實足以證明你沒有問題:) – 2014-10-10 19:09:08
我忘記寫我使用延遲加載只是由於非 - 開始,所以我的程序啓動一個if函數被調用,而不是崩潰。 – karfi 2014-10-10 19:13:51
是否有任何不先測試你的程序沒有/延遲?如何捕獲運行時錯誤在MSDN中另有詳細記錄。 – 2014-10-10 19:15:36