對於多線程Win32應用程序 - 至少對於MS Visual Studio來說,建議遍及互聯網 - 您必須鏈接多線程C運行時庫而不是單線程(所以LIBCMT.LIB或LIBCPMT.LIB而不是LIBC.LIB或LIBCP.LIB)。我目前正在使用Code :: Blocks和GCC編譯器,我不確定上述建議是否適用,或者如果更改了這些鏈接設置。我無法找到IDE中的任何構建設置中列出的上述任何文件。如果我在一個簡單的測試程序中調用「_beginthread」函數,它似乎編譯並運行沒有任何問題,但我不確定這證明了什麼。我可以從新線程調用「printf」函數,輸出顯示在主控制檯窗口中。我不知道這是否是正確的行爲。在Code :: Blocks中鏈接GCC的多線程運行時IDE
任何幫助將不勝感激。
編輯:
感謝蒂姆爲您的迴應。我不知道在這個IDE中找到編譯器標誌的位置 - 這是問題的一部分。另一部分是當我找到他們時我不知道要改變什麼。但這裏是我的簡單測試程序 - 我希望它有幫助:
#include <windows.h>
#include <process.h>
#include <stdio.h>
HANDLE ThreadHandle;
void RunThreadFunc(void *This) {
printf("%s", "Squeak.\n\n");
_endthread();
}
int main() {
Sleep(2000);
ThreadHandle = (HANDLE) _beginthread(RunThreadFunc, 0, NULL);
//printf("%s", "Woo.\n\n");
Sleep(2000);
return 0;
}
您可以將您的代碼與當前編譯器標誌一起發佈嗎? – Tim