[問題] 簡單的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