作者kafy ()
看板C_and_CPP
標題[問題] 簡單的Thread程式卻無法編譯
時間Fri Mar 16 02:00:56 2018
各位大大請教一下,我是C++ Thread函式庫新手,
請問一下以下這麼簡單的程式為何會有linking error,
謝謝!
#include <thread>
void f(int i) {}
int main() {
std::thread t(f, 1);
t.join();
return 0;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.61.66
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1521136861.A.E6A.html
1F:→ LPH66: 錯誤訊息是什麼? 03/16 02:27
2F:→ a1u1usul3: 我猜compile少參數 03/16 02:28
4F:→ F04E: 請用C++11以後的編譯器 03/16 12:38
5F:→ jaid: 不給錯誤訊息是要通靈嗎 03/16 13:16
6F:→ F04E: 靠腰 你f根本沒有實體 當然會link error... 03/16 13:28
7F:→ a27417332: f沒實體? 03/16 13:41
8F:→ F04E: 不好意思 眼花 看錯 03/16 13:59
9F:→ F04E: 水晶球告訴我,你g++編譯選項沒加 -lpthread 03/16 14:01
10F:→ joe820730: g++ main.cpp -o main.exe -lpthread -std=c++11 03/16 14:16
11F:→ johnjohnlin: 我試 g++ 7.3 也要加 -lpthread 沒錯 03/16 14:39
12F:推 dzwei: 我在Win10下用Clang 6.0 不用加-lpthread 可編譯 03/16 21:36
13F:→ dzwei: 猜想可能是因為Clang on Win所使用的連結器跟 03/16 21:38
14F:→ dzwei: VC++一樣是Windows的 03/16 21:38
15F:推 Killercat: vc++ pthread好像算在default lib裡面 會自動link 03/16 22:20
16F:→ Killercat: 這部分不知道有沒有什麼標準可依循就是... 03/16 22:21
17F:推 LPH66: 應該說 Windows 的 thread library 不是獨立出來的 03/17 00:08
18F:→ LPH66: pthread 是 POSIX thread (API), Windows 不走這一套 03/17 00:08
19F:→ LPH66: MSDN 對 (例如) CreateThread 的說明有寫它是包含在 03/17 00:10
20F:→ LPH66: kernel32.lib / kernel32.dll 裡面, 也就是核心那一包裡 03/17 00:10
21F:推 schizophrena: 為什麼不用boost? 03/17 09:56
22F:推 AstralBrain: -lpthread (x) -pthread (o) 03/17 12:06
23F:→ Killercat: windows有支援posix thread, 也是default lib 03/17 20:44
24F:推 Killercat: 誒,仔細查了一下我錯了... vs沒支援posix thread 03/17 20:46
25F:→ Killercat: 是從std::thread才開始有vs支援 03/17 20:46
26F:→ KevinR: 樓上在胡扯什麼東西... 03/17 22:12
27F:→ qwaszx771129: compile flag可能要加參數 04/13 17:08