1

マネージ C++ または C++/CLI に取り組んでいます。関数を実行するために CLI スレッドを開始しようとしています。しかし、ビルドしようとすると、「Microsoft (R) C/C++ optimizing compiler has stopped working.」というエラーが表示されます。出力ウィンドウで。「Foo.cpp(8): 致命的なエラー C1001: コンパイラで内部エラーが発生しました。」

//the class which holds the function to run 
ref class Foo
{
    void handleEvent();
    void (*func)(void);
};

void Foo::handleEvent()
{
    ThreadStart ^ param = gcnew ThreadStart(func); //line 8
    Thread ^ thread = gcnew Thread(param);
    thread.Start();
}

ThreadStart はネイティブ関数ポインタを処理できませんか? そうでない場合、C++/CLI から通常の C 関数ポインターを実行する別の方法はありますか?

4

1 に答える 1

2

8行目を次のように置き換えてみてください

ThreadStart^ param = (ThreadStart^) System::Runtime::InteropServices::Marshal::GetDelegateForFunctionPointer((IntPtr)func, ThreadStart::typeid);
于 2013-01-29T15:30:28.740 に答える