调用dll函数后未捕获C ++异常

时间:2012-12-10 10:26:07

标签: c++ qt visual-studio-2008 dll qt-creator

我遇到了以下问题: 有导出函数的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。

2 个答案:

答案 0 :(得分:0)

首先,删除throw表达式中的(int)不安全的强制转换。

然后,在cerr块中添加if(devError)语句以证明它实际上正在执行。

然后,制作一个测试程序来证明异常可以正常工作。只是一个main()投掷和捕获。

答案 1 :(得分:0)

请检查以下内容:

1)devError真的是!= 0?

2)DLL函数中可能已经发生异常......