2

我遇到了以下问题:有导出函数的 DLL。

这是代码示例:[DLL]

__declspec(dllexport) int openDevice(int,void**)

[应用程序]

开发者.h:

__declspec(dllimport) int openDevice(int,void**)

开发者.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 块,我没有理由。请帮助解决这个问题。我正在使用带有 MSVC 9.0 的 Qt Creator。

4

2 回答 2

0

请检查以下内容:

1)devError真的!= 0?

2)也许DLL函数中已经发生了异常......

于 2012-12-10T10:31:12.803 回答
0

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

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

然后,编写一个测试程序来证明异常确实有效。只是一个main()投掷和接球。

于 2012-12-10T10:28:19.123 回答