C ++ /升压:例如,在未定义的符号? [英] C++ / Boost: Undefined Symbols in example?

查看:200
本文介绍了C ++ /升压:例如,在未定义的符号?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图编译的例子是:<一href=\"http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/examples.html\">http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/examples.html
(聊天例子)

The example I'm trying to compile is from: http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/examples.html (the chat example)

下面是我使用的是什么使它:

Here is what I'm using to make it:

>>>    g++ chat_client.cpp chat_message.hpp
>>>    g++ chat_server.cpp chat_message.hpp

这是什么端子输出:

% g++ chat_client.cpp chat_message.hpp
In file included from chat_client.cpp:17:
chat_message.hpp: In member function ‘void chat_message::encode_header()’:
chat_message.hpp:84: warning: format ‘%4d’ expects type ‘int’, but argument 3 has type ‘size_t’
ld: warning: in chat_message.hpp, file was built for unsupported file format which is not the architecture being linked (x86_64)
Undefined symbols:
  "boost::system::generic_category()", referenced from:
      __static_initialization_and_destruction_0(int, int)in cctJA2c1.o
      __static_initialization_and_destruction_0(int, int)in cctJA2c1.o
  "boost::thread::start_thread()", referenced from:
      boost::thread::thread<boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > >(boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > >, boost::disable_if<boost::is_convertible<boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > >&, boost::detail::thread_move_t<boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > > >, boost::thread::dummy*>::type)in cctJA2c1.o
  "boost::thread::join()", referenced from:
      _main in cctJA2c1.o
  "typeinfo for boost::detail::thread_data_base", referenced from:
      typeinfo for boost::detail::thread_data<boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > >in cctJA2c1.o
  "vtable for boost::detail::thread_data_base", referenced from:
      boost::detail::thread_data_base::thread_data_base()in cctJA2c1.o
  "boost::thread::~thread()", referenced from:
      _main in cctJA2c1.o
      _main in cctJA2c1.o
  "boost::detail::thread_data_base::~thread_data_base()", referenced from:
      boost::detail::thread_data<boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > >::~thread_data()in cctJA2c1.o
      boost::detail::thread_data<boost::_bi::bind_t<unsigned long, boost::_mfi::mf0<unsigned long, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > >::~thread_data()in cctJA2c1.o
  "boost::system::system_category()", referenced from:
      boost::system::get_system_category()     in cctJA2c1.o
      boost::system::error_code::error_code()in cctJA2c1.o
      __static_initialization_and_destruction_0(int, int)in cctJA2c1.o
ld: symbol(s) not found
collect2: ld returned 1 exit status


  • 升压已正确安装。我有一个使用一对夫妇的提升位特点另一个应用程序。

  • 更新:
    这是我使用当前的命令:

    UPDATE: this is the current command I'm using:

    % g++ chat_client.cpp chat_message.hpp -lboost_asio -lboost_thread -o client -L/opt/local/lib/
    

    说,它无法找到-lboost_asio

    says it can't find -lboost_asio

    我选择/ local / lib目录(安装升压)看了看,我看不出有任何libboost_asio.so或类似的东西= \\

    I looked in opt/local/lib (where boost is installed) and I don't see any libboost_asio.so or anything like that =\

    推荐答案

    您需要提供G ++ Boost库与usins​​ -l选项链接。我有这方面的例子咋一看,你猜,你definitly需要线程库。您可以通过它链接

    You need to provide g++ boost libraries to link with usins -l option. I have a quick look on this examples and guess that you definitly need thread library. You can link with it using

    g++ source.cpp -o executable -lboost_thread 
    

    您也可以使用需要boost_system库

    Also you may need with boost_system library using

    g++ source.cpp -o executable -lboost_thread -lboost_system
    

    这篇关于C ++ /升压:例如,在未定义的符号?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆