0

ネイティブ サブシステムで例外処理を使用できません。

これは私のcppファイルです:

#include <ntddk.h>
#include <exception>

int __cdecl  main () {
    try
    {
      throw 20;

    }
    catch (int e)
    {

    }

    return 0;
}

そして私のソースファイル:

TARGETNAME = native
TARGETTYPE = PROGRAM
UMTYPE = nt
USER_C_FLAGS=$(USER_C_FLAGS) /EHa
SOURCES = exeption.cpp \

INCLUDES=$(DDK_INC_PATH)
MINWIN_SDK_LIB_PATH=$(SDK_LIB_PATH)
TARGETLIBS=$(NTDLL_CRT) $(SDK_LIB_PATH)\ntdll.lib lib.lib

そして、私のエラーは次のとおりです。

error LNK2019: unresolved external symbol ___CxxFrameHandler3 referenced in function __ehhandler$_main

error LNK2019: unresolved external symbol __EH_epilog3 referenced in function __catch$_main$0

error LNK2019: unresolved external symbol __EH_prolog3_catch referenced in function _main

error LNK2019: unresolved external symbol __CxxThrowException@8 referenced in function _main

error LNK2001: unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)

どうすれば問題を解決できますか?

4

1 に答える 1

0

この問題については、http://www.codeproject.com/Articles/22801/Drivers-Exceptions-and-Cで説明されています。解決策はおそらく機能しますが、未定義の動作が発生する可能性があります。

ただし、問題はもっと単純です。いくつかのDDKのものを使用してユーザーモードプログラムを作成する必要があります。デフォルトですべてのCRTライブラリを含むVC++ビルド環境(またはWindows SDK)を使用し、DDK用のntddk.hファイルを含めるだけです。

ドライバーでC++例外を使用したい場合、答えは簡単です。決してこれを行わないでください。

于 2012-05-09T14:40:10.127 に答える