我遇到了以下问题: 有导出函数的DLL。
以下是代码示例: [DLL]
__declspec(dllexport) int openDevice(int,void**)
[APP]
dev.h:
__declspec(dllimport) int openDevice(int,void**)
dev.cpp:
try {
void *p = NULL;
int devError = openDevice(some_integer,&p);
if(devError)
throw (int)devError;
} catch(int i) {
cerr << "Device opening error: " << i << endl;
}
catch(...) {
//other handler
}
异常没有传递给catch块,我没有理由。请帮忙解决这个问题。 我正在使用Qt Creator和MSVC 9.0。
答案 0 :(得分:0)
首先,删除throw表达式中的(int)
不安全的强制转换。
然后,在cerr
块中添加if(devError)
语句以证明它实际上正在执行。
然后,制作一个测试程序来证明异常可以正常工作。只是一个main()
投掷和捕获。
答案 1 :(得分:0)
请检查以下内容:
1)devError
真的是!= 0?
2)DLL函数中可能已经发生异常......