是否可以在非托管 DLL 中引发异常并在托管应用程序中处理它?
我的非托管 C++ DLL 会在出现错误时抛出异常,它们应该在调用的可执行应用程序中处理。
CMyFileException *x = new CMyFileException;
throw(x);
这以前可行,但现在应用程序使用不同的标志(/clr等)编译,因为我们需要使用一些托管代码。当抛出异常时,我收到一个 System.ExecutionEngineException ,即使在我的调用 exe 中使用 catch(...) 似乎也没有被捕获。
我已经看到编译器选项 /clr 暗示 /EHa 用于异常处理,但据我现在理解,这似乎是选择的选项。
是否有任何其他替代方法(编译器/链接器设置)可以在模块(DLL/exe)边界上抛出和捕获异常?
谢谢你的支持!马可