[问题] 简单的Thread程式却无法编译

楼主: kafy   2018-03-16 02:00:56
各位大大请教一下,我是C++ Thread函式库新手,
请问一下以下这么简单的程式为何会有linking error,
谢谢!
#include <thread>
void f(int i) {}
int main() {
std::thread t(f, 1);
t.join();
return 0;
}
作者: LPH66 (-6.2598534e+18f)   2018-03-16 02:27:00
错误讯息是什么?
作者: a1u1usul3 (Q-Max)   2018-03-16 02:28:00
我猜compile少参数
作者: Hazukashiine (私は幸せです)   2018-03-16 03:26:00
作者: F04E (Fujitsu)   2018-03-16 12:38:00
请用C++11以后的编译器
作者: jaid (jaid)   2018-03-16 13:16:00
不给错误讯息是要通灵吗
作者: F04E (Fujitsu)   2018-03-16 13:28:00
靠腰 你f根本没有实体 当然会link error...
作者: a27417332 (等号卡比)   2018-03-16 13:41:00
f没实体?
作者: F04E (Fujitsu)   2018-03-16 13:59:00
不好意思 眼花 看错水晶球告诉我,你g++编译选项没加 -lpthread
作者: joe820730 (Let it go)   2018-03-16 14:16:00
g++ main.cpp -o main.exe -lpthread -std=c++11
作者: johnjohnlin (嗯?)   2018-03-16 14:39:00
我试 g++ 7.3 也要加 -lpthread 没错
作者: dzwei (Cout<< *p << \n ;)   2018-03-16 21:36:00
我在Win10下用Clang 6.0 不用加-lpthread 可编译猜想可能是因为Clang on Win所使用的连结器跟VC++一样是Windows的
作者: Killercat (杀人猫™)   2018-03-16 22:20:00
vc++ pthread好像算在default lib里面 会自动link这部分不知道有没有什么标准可依循就是...
作者: LPH66 (-6.2598534e+18f)   2018-03-17 00:08:00
应该说 Windows 的 thread library 不是独立出来的pthread 是 POSIX thread (API), Windows 不走这一套MSDN 对 (例如) CreateThread 的说明有写它是包含在kernel32.lib / kernel32.dll 里面, 也就是核心那一包里
作者: schizophrena (你很記者你很腦殘)   2018-03-17 09:56:00
为什么不用boost?
作者: AstralBrain   2018-03-17 12:06:00
-lpthread (x) -pthread (o)
作者: Killercat (杀人猫™)   2018-03-17 20:44:00
windows有支援posix thread, 也是default lib诶,仔细查了一下我错了... vs没支援posix thread是从std::thread才开始有vs支援
作者: KevinR (Kevin)   2018-03-17 22:12:00
楼上在胡扯什么东西...
作者: qwaszx771129   2018-04-13 17:08:00
compile flag可能要加参数

Links booklink

Contact Us: admin [ a t ] ucptt.com