アドバイスは、マルチスレッドのWin32アプリケーション(少なくともMS Visual Studioの場合)では、シングルスレッドのものではなくマルチスレッドのCランタイムライブラリにリンクする必要があります(したがって、LIBC.LIBまたはLIBCP.LIBの代わりにLIBCMT.LIBまたはLIBCPMT.LIB)。私は現在GCCコンパイラでCode :: Blocksを使用していますが、上記のアドバイスが適用できるかどうか、あるいはもしそうならリンク設定を変更する方法がわかりません。 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