2010-09-14 42 views
11

我正在使用MinGW代碼塊,並試圖獲得一個簡單的程序來編譯靜態鏈接。我使用these directions構建了Boost庫。一切都很順利,我能夠成功地編譯這個簡單的程序(它編譯,我知道它不工作,因爲它在消息發送到控制檯之前退出,但我只是希望它編譯)。代碼塊,MinGW,Boost和靜態鏈接問題

如果我在我的鏈接庫中有一個DLL,它編譯得很好,但是當我用相同內容的靜態.a庫進行切換時,我得到未定義的引用,例如「_imp ___ ZN5boost6threadD1Ev'|」的未定義引用。

我不知道問題是什麼,找不到解決方案。我認爲這可能與鏈接器設置有關,但我找不到有關如何更改它們的信息。我會非常感謝任何可以提供的幫助。

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

void myfunction() 
{ 
    std::cout << "this is a thread" << std::endl; 
    return; 
} 

int main() 
{ 
    boost::thread mythread(&myfunction); 
    return 0; 

} 

回答

10

它試圖在爲動態鏈接配置​​標題時嘗試進行靜態鏈接。我在this question中解釋了這個libssh。撥打boost/thread/detail/config.hpp讓我覺得你應該#define BOOST_THREAD_USE_LIB,或使用-D標誌來做同樣的事情。