Windows 8下使用g++编译C++多线程程序失败求助
解决Windows 8下g编译C多线程代码失败的问题
你的代码本身没有问题,编译失败是因为缺少必要的编译参数,具体原因和解决方法如下:
问题原因
std::thread是C11标准引入的特性,g默认可能未启用C++11及以上编译标准,导致编译器无法识别接受函数指针的std::thread构造函数。- Windows下使用MinGW的g++编译多线程程序时,必须显式链接线程库,否则会出现函数匹配失败的错误。
正确的编译命令
将原来的编译命令替换为:
g++ -std=c++11 -pthread test.cpp -o test.exe
如果你的g版本支持更高的C标准(比如C17、C20),也可以把-std=c++11换成-std=c++17或-std=c++20,效果一致。
参数说明
-std=c++11:指定编译器使用C++11标准,确保std::thread的相关特性被正确识别。-pthread:链接线程依赖库,解决Windows下多线程代码的编译依赖问题。
编译成功后,运行生成的test.exe就能得到预期输出。
内容的提问来源于stack exchange,提问作者Madhusudhana
相关产品推荐
相关产品推荐

