c++ files to include for boost : asio

我与影子孤独终老i 提交于 2019-12-25 01:37:25

问题


I'm following this tutorial however it does not state which libaries I need to include in order to get boost to work,current options for links are:

-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

however this returns the following erro:

which states that it can't find asio, am I doing something wrong or was assio the wrong library to link to? Or is there any other way to find out. Note that this is my 2nd c++ project(through I have a lot of java experience) and first with the heavy use of libraries so details are somewhat required.

Removing boost/asio gave me the following errors:

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

Build Finished **

I use an ubuntu (x64) laptop if it matters.


回答1:


Most of boost is implemented in what's called "header-only" code. Through the generous use of C++ templates, there is no actual library code to which your code needs to link. However, there are, as you've seen some actual libraries as well. Generally, the help you seek is probably here: http://www.boost.org/doc/libs/1_55_0/more/getting_started/unix-variants.html#link-your-program-to-a-boost-library

Your particular program uses the timer and system libraries and so you can probably use this command line to link your program:

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



回答2:


You can look at the bjam in boost/libs/asio/example/cpp03/tutorial/Jamfile.v2:

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
;

You can see that they build all the tutorial steps with

-lboost_system -lboost_thread -DBOOST_ALL_NO_LIB=1

on linux



来源:https://stackoverflow.com/questions/22460164/c-files-to-include-for-boost-asio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!