2

次の問題で立ち往生しています: エクスポートされた関数を含む DLL があります。

コード例は次のとおりです。 [DLL]

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

[アプリ]

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 ブロックに渡されません。その理由はありません。この問題を解決するのを手伝ってください。MSVC 9.0 で Qt Creator を使用しています。

4

2 に答える 2

0

最初に、(int)スロー式で安全でないキャストを削除します。

cerr次に、ブロック内にステートメントを追加して、if(devError)実際に実行されていることを証明します。

次に、テスト プログラムを作成して、例外がまったく機能することを証明します。main()投げてキャッチするだけ。

于 2012-12-10T10:28:19.123 に答える
0

以下を確認してください。

1)devError本当に!= 0?

2) DLL 関数内で既に例外が発生している可能性があります...

于 2012-12-10T10:31:12.803 に答える