我想問一下,在應用程序運行時,是否有某種方法可以檢測包含在我的應用程序中的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. VB6缺少DLL
- 4. NRefactory缺少dll
- 5. 檢測缺少方法
- 6. MSIE瀏覽器檢測:缺少基數?
- 7. 檢測缺少的數學表達式
- 8. 缺少libgcc_s_dw2-1.dll
- 9. .NET/Silverlight缺少DLL
- 10. 錯誤 - 缺少DLL
- 11. LoadLibrary ...失敗。缺少dll
- 12. 64位缺少dll Win
- 13. 缺少fireball.docking dll引用
- 14. 在Azure函數應用程序中缺少DLL
- 15. 的Xcode 8檢測到缺少約束
- 16. 檢測缺少子!那種!地圖!等
- 17. PHP中缺少Session_start函數
- 18. Statsmodels API:缺少SARIMAX函數
- 19. 缺少函數返回'UIImage'
- 20. fftpack中缺少scipy函數
- 21. DialogPreference缺少構造函數
- 22. 替代缺少setOnDateChangeListener() - 函數
- 23. 缺少函數頭C++
- 24. PHP缺少mb_strpos函數?
- 25. 爲什麼pylint沒有在列表中檢測到缺少成員函數(E1103)?
- 26. 在PHP函數中缺少參數?
- 27. 計數中缺少函數錯誤
- 28. PHP中缺少參數$ _POST函數
- 29. GroupBy Datepart函數缺少數據
- 30. 缺少時態網絡中社區檢測的數據集
這通常是非常容易診斷,你的程序不會啓動。所以沒有必要去測試*,而你正在運行,你*是*運行的事實足以證明你沒有問題:) – 2014-10-10 19:09:08
我忘記寫我使用延遲加載只是由於非 - 開始,所以我的程序啓動一個if函數被調用,而不是崩潰。 – karfi 2014-10-10 19:13:51
是否有任何不先測試你的程序沒有/延遲?如何捕獲運行時錯誤在MSDN中另有詳細記錄。 – 2014-10-10 19:15:36