2012-06-13 139 views
6

步驟建立簡單的升壓方案:
1. sudo的港口提升
安裝在/ opt /本地/升壓,升壓文件,庫文件位於/ opt/local/lib目錄

2.使用的XCode創建C++項目
如何在Mac OS(獅子)

#include <iostream> 
#include <boost/asio.hpp> 
int main() { 
    return 0; 
} 


3集的XCode找出在 「生成設置」 助推
- > 「HEADER_SEARCH_PATHS」
調試和發佈添加路徑/ opt/local/include

4.「Build Settings」 - >「LIBRARY_SEARCH_PATHS」 - >添加/ opt/local/lib都用於調試和發佈。

5.編譯程序失敗。
錯誤消息,

Undefined symbols for architecture x86_64: 
    "boost::system::generic_category()", referenced from: 
    ___cxx_global_var_init1 in main.o 
    ___cxx_global_var_init2 in main.o 
    "boost::system::system_category()", referenced from: 
    ___cxx_global_var_init3 in main.o 
    boost::asio::error::get_system_category() in main.o 
    "boost::asio::error::get_netdb_category()", referenced from: 
    ___cxx_global_var_init5 in main.o <br> 
    "boost::asio::error::get_addrinfo_category()", referenced from: 
    ___cxx_global_var_init6 in main.o <br> 
    "boost::asio::error::get_misc_category()", referenced from: 
    ___cxx_global_var_init7 in main.o <br> 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我錯了的程序?

+0

這似乎更像是一個問題,如何正確地與項目中的圖書館鏈接。路徑是不夠的,但圖書館也必須指定。 – lpapp

回答

8

您需要Boost.System鏈接,這應該是在/opt/local/lib/libboost_system(有一些後綴,這取決於你如何建立升壓)

是添加到您的Xcode項目。

+0

儘管沒有被接受,但這是正確的。我把它放在文檔中,但肯定是[在這裏](http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/using.html#boost_asio.using.dependencies)。 –

+0

如何在/ opt中添加某些內容到您的XCode項目中?/opt是一個不可見的文件夾。 –

+0

@WarrenP我將/ opt /文件夾拖放到取景器的左側作爲快捷方式。我也顯示所有隱藏的文件,但也無法在Xcode庫鏈接面板中顯示。 – CCC

4
  1. 選擇你的部分「目標」
  2. 「鏈接二進制與圖書館」下的「構建階段」選項卡,添加Boost庫。
  3. 如果通過MacPort安裝,升壓將在/opt/local/lib
    如果通過BREW安裝,升壓將在/usr/local/Cellar/boost
    如果構建自己,它會在/usr/local/lib by defaultyourBoostLib/stage/lib