1 回答

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于某些原因,在 win10+ 上它會(huì)提高DBG_PRINTEXCEPTION_C
.?這是由OutputDebugStringW
沒(méi)有調(diào)試器正在偵聽(tīng)引起的。
我認(rèn)為通常它會(huì)用微軟的__try 和 __except來(lái)完成,但在 MinGW 中只有 __try1 和 __except1,我認(rèn)為它們只適用于 32 位系統(tǒng)(很少有相關(guān)文檔)
但我發(fā)現(xiàn),你可以添加一個(gè)異常處理程序
所以現(xiàn)在 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;
}
因?yàn)槭褂迷搸?kù)以加載引擎開(kāi)始并以卸載它結(jié)束,并且引擎是一個(gè)單例,所以我剛剛將 also 設(shè)為PVOID handler全局單例并且AddVectoredContinueHandleris inLoadEngine和RemoveVectoredContinueHandleris in UnloadEngine。
- 1 回答
- 0 關(guān)注
- 210 瀏覽
添加回答
舉報(bào)