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 关注
- 159 浏览
添加回答
举报