0
我是新來的線程和Winforms/C++。當我按下按鈕時,我想在新線程中啓動一個函數。我正在關注這個線程爲tutorial。當我在單獨的VC++項目中構建在該站點上給出的示例代碼時,構建成功。C++/Winforms線程:_beginthread出現構建錯誤
但是,如果我在我的C++/Winforms中執行以下操作,則生成將無法完成,我收到編譯錯誤。
我在這裏錯過了什麼?
幫助!
代碼:
void Test(void *arg);
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
_beginthread(Test, 0, (void*)12);
}
void Test(void *arg)
{
// Do something
}
生成錯誤:
Error 1 error C2664: '_beginthread' : cannot convert parameter 1 from 'void (__clrcall *)(void *)' to 'void (__cdecl *)(void *)' c:\users\documents\visual studio 2010\projects\statsv2.0\statsv2.0\Form1.h 659 1 StatsV2.0
感謝您的快速回復:-)。如果我改變你的建議,我仍然得到一個構建錯誤,如下所示:錯誤1錯誤C2062:輸入'void'意外。指向測試函數原型。 – HaggarTheHorrible 2013-02-20 05:01:56
@Haggar:哎呀,我似乎已經把調用約定放在了錯誤的地方!您還可以將函數放在'#pragma unmanaged' ...'#pragma managed'中。 – Cameron 2013-02-20 05:04:52
我這樣做的#pragma非託管 __cdecl無效測試(無效* ARG) { \t //做一些事情 } 的#pragma管理。但我仍然得到:輸入'void'意外。 – HaggarTheHorrible 2013-02-20 05:11:33