1 回答

TA貢獻1998條經驗 獲得超6個贊
由于某些原因,在 win10+ 上它會提高DBG_PRINTEXCEPTION_C
.?這是由OutputDebugStringW
沒有調試器正在偵聽引起的。
我認為通常它會用微軟的__try 和 __except來完成,但在 MinGW 中只有 __try1 和 __except1,我認為它們只適用于 32 位系統(很少有相關文檔)
但我發現,你可以添加一個異常處理程序
所以現在 lib.cpp:
#include <Engine.h> //the library
#ifdef _WIN32
#include <windows.h>
LONG WINAPI VectoredHandler(struct _EXCEPTION_POINTERS *ExceptionInfo) {
? ?UNREFERENCED_PARAMETER(ExceptionInfo);??
? ?return EXCEPTION_CONTINUE_EXECUTION;? //just continue
}
#endif
void* LoadEngine(char *sn) {
#ifdef _WIN32
? PVOID handler = AddVectoredContinueHandler(1, VectoredHandler);
#endif
? Engine *e;
? GetEngineObject(sn, &e);
#ifdef _WIN32
? RemoveVectoredContinueHandler(handler);?
#endif
? return (void*) e;
}
因為使用該庫以加載引擎開始并以卸載它結束,并且引擎是一個單例,所以我剛剛將 also 設為PVOID handler全局單例并且AddVectoredContinueHandleris inLoadEngine和RemoveVectoredContinueHandleris in UnloadEngine。
- 1 回答
- 0 關注
- 195 瀏覽
添加回答
舉報