我目前正在尝试用C++创建一个编译器,它在运行时生成机器代码.但是,我目前正在尝试启用安全异常处理(使用/ SAFESEH进行编译).我的自定义异常处理程序在调试模式下工作,但是当我在发布模式下运行相同的代码时,我的进程才被终止.
我很确定问题是我没有注册我的自定义异常处理程序,因为当我使用/ SAFESEH编译我的代码时:NO,即使在发布模式下一切正常.
我的自定义异常处理程序是用我的其他C++代码编写的,我试图通过将.asm文件添加到我的项目中来将其注册为异常处理程序:
.386
.model flat
_MyExceptionHandler@16 proto
.safeseh _MyExceptionHandler@16
end
Run Code Online (Sandbox Code Playgroud)
作为描述在这里.然后使用/ safeseh选项(以及其他)组装asm文件.
我的处理函数目前有以下声明:
extern "C" EXCEPTION_DISPOSITION __stdcall MyExceptionHandler(struct
_EXCEPTION_RECORD *ExceptionRecord, void * EstablisherFrame, struct
_CONTEXT *ContextRecord, void * DispatcherContext);
Run Code Online (Sandbox Code Playgroud)
将此函数注册为异常处理程序的正确方法是什么?
谢谢你的任何建议!