2009-07-25 52 views
2

我創建了一個XCode項目,並且向庫頭搜索路徑添加了「/ opt/local/include/boost」,並向庫搜索路徑添加了「/ opt/local/lib」在MacOSX上使用增強庫時出現鏈接錯誤

但我仍然有這樣的錯誤:

 
boost::system::get_generic_category()", referenced from: 
    __static_initialization_and_destruction_0(int, int)in main.o 
    __static_initialization_and_destruction_0(int, int)in main.o 
    __static_initialization_and_destruction_0(int, int)in main.o 

而且在我的/ opt/local/lib目錄,我覺得這是(我認爲是Boost.System庫):

 
-rw-r--r-- 2 root admin  80600 Jul 23 16:31 libboost_system-mt.a 
-rwxr-xr-x 2 root admin  30988 Jul 23 16:30 libboost_system-mt.dylib* 

可以請你告訴我我錯過了什麼?

+1

您還沒有提供錯誤的描述。它是「未定義的符號」嗎? – stepancheg 2009-07-25 15:49:34

回答

5

添加庫路徑是不夠的。這樣可以確保只要您告訴它鏈接到庫,它就會在指定的路徑中搜索該庫以及所有默認路徑。

所以你還需要實際告訴編譯器鏈接到庫,旗

-lboost_system-mt 

在Windows上,加速默認支持autolinking - 也就是說,如果你只是包括正確的頭,它會嘗試鏈接到實際的庫(通過使用MSVC#pragma)。在其他平臺上,您必須手動鏈接到庫。

2

要鏈接到XCode中的庫,請右鍵單擊使用Boost的「Target」並選擇獲取信息。在下面的列表「鏈接庫」中,通過單擊+

添加boost dylib文件希望這有幫助。

3

更新:對於XCode 4,您需要爲鏈接器添加.dylib文件。在XCode中,使用'Navigator'窗格中的'Project Navigator'選項。然後點擊您的項目,然後點擊您的目標,然後選擇「Build Phases」選項卡,然後按下「Link Binary With Libraries」組中的「+」按鈕。您需要添加您嘗試使用的任何libboost_ .dylib。

Adding Link Binary in XCode4 for Boost