2011-03-29 88 views
2

我已經使用內置升壓:不能使用MinGW對Boost.Thread 1.46.1鏈接4.5.2

bjam --toolset=gcc --with-thread stage 

每當我試圖實際使用Boost.Thread我越來越未定義的引用盡管我與它聯繫在一起。它不會發生在像Regex或System這樣的其他Boost庫上。

>g++ main.cpp -I. -L. -lboost_thread-mgw45-mt-1_46_1 
C:\Users\jhasse\AppData\Local\Temp\ccjYfDox.o:main.cpp:(.text+0xf): undefined reference to `_imp___ZN5boost6thread20hardware_concurrencyEv' 
collect2: ld returned 1 exit status 

示例程序:

#include <boost/thread.hpp> 
#include <iostream> 

int main() 
{ 
    std::cout << boost::thread::hardware_concurrency() << std::endl; 
} 

我在做什麼錯?

+2

嘗試添加編譯器選項「-DBOOST_THREAD_USE_LIB」 – 2011-03-29 16:57:11

+0

謝謝!現在它的工作:) – jhasse 2011-03-30 08:48:51

+2

你好,我只是試過這種方法來使用Boost,我也得到了鏈接器錯誤,當我使用所述編譯器選項時,它被移動到我的選項的#defines部分。我在MinGW中使用代碼塊,並在編譯器設置 - >其他選項中使用此選項。 – Molmasepic 2011-07-30 02:33:02

回答

9

嘗試添加編譯器選項「-DBOOST_THREAD_USE_LIB」

+1

+1;記錄在哪裏?我無法在boost線程1.49文檔中找到任何關於此的通知。 boost 1.50文檔中有關於在頂級頁面中定義關於線程庫的未完成句子。 – Christoph 2012-07-02 21:33:28