1

我正在研究托管 C++ 或 C++/CLI。我正在尝试启动一个 CLI 线程来执行一个函数。但是,当我尝试构建时,我收到错误“Microsoft (R) C/C++ 优化编译器已停止工作”。在输出窗口中。“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 回答