要包含for boost的c ++文件:asio

时间:2014-03-17 16:40:56

标签: c++ eclipse boost linker

我正在关注this tutorial但是它没有说明我需要包含哪些库以便提升工作,链接的当前选项是:

-I/usr/include/opencv2 -I/usr/include/boost_1_55_0 -I/usr/include/boost_1_55_0/boost -O0 -g3 -Wall -c -fmessage-length=0

但是这会返回以下错误:

表示它无法找到asio,我做错了什么或者是错误的库链接到哪个?或者还有其他方法可以找到答案。请注意,这是我的第二个c ++项目(通过我有很多java经验),首先是大量使用库,因此需要细节。

删除boost / asio给了我以下错误:

make all 
Building target: DisplayImage
Invoking: GCC C++ Linker
g++ -L/usr/include/opencv2 -L/usr/include/boost_1_55_0/boost -L/usr/include/boost_1_55_0 -L/usr/include/opencv2 -L/usr/lib -o "DisplayImage"  ./src/Cap.o ./src/DisplayImage.o ./src/Filters.o ./src/sender.o   -lopencv_imgproc -lopencv_highgui -lopencv_core
./src/sender.o: In function `__static_initialization_and_destruction_0':
/usr/include/boost_1_55_0/boost/system/error_code.hpp:222: undefined reference to `boost::system::generic_category()'
/usr/include/boost_1_55_0/boost/system/error_code.hpp:223: undefined reference to `boost::system::generic_category()'
/usr/include/boost_1_55_0/boost/system/error_code.hpp:224: undefined reference to `boost::system::system_category()'
./src/sender.o: In function `error_code':
/usr/include/boost_1_55_0/boost/system/error_code.hpp:323: undefined reference to `boost::system::system_category()'
./src/sender.o: In function `boost::asio::error::get_system_category()':
/usr/include/boost_1_55_0/boost/asio/error.hpp:224: undefined reference to `boost::system::system_category()'
collect2: ld returned 1 exit status
make: *** [DisplayImage] Error 1

构建完成**

如果重要的话,我会使用ubuntu(x64)笔记本电脑。

2 个答案:

答案 0 :(得分:1)

大多数boost都是在所谓的“仅标头”代码中实现的。通过大量使用C ++模板,您的代码无需链接的实际库代码。但是,正如您已经看到一些实际的库一样。一般来说,您寻求的帮助可能在这里:http://www.boost.org/doc/libs/1_55_0/more/getting_started/unix-variants.html#link-your-program-to-a-boost-library

您的特定程序使用timersystem库,因此您可以使用此命令行链接您的程序:

g++ timer.cpp -o timer -lboost_timer -lboost_system

答案 1 :(得分:0)

您可以查看boost/libs/asio/example/cpp03/tutorial/Jamfile.v2中的bjam:

project
: requirements
    <library>/boost/system//boost_system
    <library>/boost/thread//boost_thread
    <define>BOOST_ALL_NO_LIB=1
    <threading>multi
    <os>SOLARIS:<library>socket
    <os>SOLARIS:<library>nsl
    <os>NT:<define>_WIN32_WINNT=0x0501
    <os>NT,<toolset>gcc:<library>ws2_32
    <os>NT,<toolset>gcc:<library>mswsock
    <os>NT,<toolset>gcc-cygwin:<define>__USE_W32_SOCKETS
    <os>HPUX,<toolset>gcc:<define>_XOPEN_SOURCE_EXTENDED
    <os>HPUX:<library>ipv6
;

您可以看到他们使用

构建了所有教程步骤
-lboost_system -lboost_thread -DBOOST_ALL_NO_LIB=1

在linux上