2012-06-13 60 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