Bri*_*ian 5 c++ exception visual-studio
我正在研究用Visual Studio 6编写的应用程序(我知道,FML),它使用LoadLibrary和调用DLL中的函数GetProcAddress.较新的代码无法在VC6中编译,需要更新的编译器.DLL有一些构造C++对象的函数,然后VC6程序通过抽象类使用该对象.
这通常很好用,但是当GetProcAddress抛出异常检索的函数时它会遇到问题- 即使在DLL中捕获异常时也是如此.我注意到,当抽象类的方法抛出异常时,这不会发生.在这种情况下,事情正常.
我在这做错了什么?如何使VC6生成代码以正确处理异常?
编辑:这是一个导致程序崩溃的函数示例:
extern "C" __declspec(dllexport) Box* getBox(const char* addr)
{
try {
return createBox(addr);
} catch (std::exception& ex) {
LOG_ERROR("Open failed: " << ex.what());
return 0;
} catch (...) {
LOG_ERROR("Error while opening.");
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)