Reputation: 4629
I've followed the tutorial from here to set up my Eclipse installation with Boost and the examples at the bottom of the tutorial to test the compilation work. I'm trying to use asio
for sockets, but I'm receiving the following when compiling:
**** Build of configuration Debug for project Client ****
**** Internal Builder is used for build ****
g++ -IC:\MinGW\Boost\include\boost-1_53 -O0 -g3 -Wall -c -fmessage-length=0 -o src\Client.o ..\src\Client.cpp
g++ -LC:\MinGW\Boost\lib -o Client.exe src\Client.o
src\Client.o: In function `__static_initialization_and_destruction_0':
C:/MinGW/Boost/include/boost-1_53/boost/system/error_code.hpp:214: undefined reference to `boost::system::generic_category()'
C:/MinGW/Boost/include/boost-1_53/boost/system/error_code.hpp:215: undefined reference to `boost::system::generic_category()'
C:/MinGW/Boost/include/boost-1_53/boost/system/error_code.hpp:216: undefined reference to `boost::system::system_category()'
src\Client.o: In function `boost::system::error_code::error_code()':
C:/MinGW/Boost/include/boost-1_53/boost/system/error_code.hpp:315: undefined reference to `boost::system::system_category()'
src\Client.o: In function `boost::asio::error::get_system_category()':
C:/MinGW/Boost/include/boost-1_53/boost/asio/error.hpp:216: undefined reference to `boost::system::system_category()'
src\Client.o: In function `boost::asio::detail::winsock_init_base::startup(boost::asio::detail::winsock_init_base::data&, unsigned char, unsigned char)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/winsock_init.ipp:39: undefined reference to `__imp_WSAStartup'
src\Client.o: In function `boost::asio::detail::winsock_init_base::cleanup(boost::asio::detail::winsock_init_base::data&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/winsock_init.ipp:48: undefined reference to `__imp_WSACleanup'
src\Client.o: In function `boost::asio::detail::socket_ops::clear_last_error()':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:51: undefined reference to `__imp_WSASetLastError'
src\Client.o: In function `boost::asio::detail::socket_ops::close(unsigned long long, unsigned char&, bool, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:297: undefined reference to `__imp_closesocket'
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:314: undefined reference to `__imp_ioctlsocket'
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:329: undefined reference to `__imp_closesocket'
src\Client.o: In function `boost::asio::detail::socket_ops::recv(unsigned long long, _WSABUF*, unsigned long long, int, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:683: undefined reference to `__imp_WSARecv'
src\Client.o: In function `boost::asio::detail::socket_ops::send(unsigned long long, _WSABUF const*, unsigned long long, int, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:1066: undefined reference to `__imp_WSASend'
src\Client.o: In function `boost::asio::detail::socket_ops::socket(int, int, int, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:1294: undefined reference to `__imp_WSASocketA'
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:1305: undefined reference to `__imp_setsockopt'
src\Client.o: In function `boost::asio::detail::socket_ops::poll_read(unsigned long long, unsigned char, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:1716: undefined reference to `__imp_select'
src\Client.o: In function `boost::asio::detail::socket_ops::poll_connect(unsigned long long, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:1797: undefined reference to `__imp_select'
src\Client.o: In function `boost::asio::detail::socket_ops::translate_addrinfo_error(int)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:2869: undefined reference to `__imp_WSAGetLastError'
src\Client.o: In function `boost::asio::detail::socket_ops::getaddrinfo(char const*, char const*, addrinfo const&, addrinfo**, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:2887: undefined reference to `__imp_getaddrinfo'
src\Client.o: In function `boost::asio::detail::socket_ops::freeaddrinfo(addrinfo*)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:2930: undefined reference to `__imp_freeaddrinfo'
src\Client.o: In function `unsigned long long boost::asio::detail::socket_ops::error_wrapper<unsigned long long>(unsigned long long, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:62: undefined reference to `__imp_WSAGetLastError'
src\Client.o: In function `int boost::asio::detail::socket_ops::error_wrapper<int>(int, boost::system::error_code&)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:62: undefined reference to `__imp_WSAGetLastError'
src\Client.o: In function `int boost::asio::detail::socket_ops::call_connect<int>(int boost::asio::detail::socket_ops::msghdr::*, unsigned long long, sockaddr const*, unsigned long long)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:452: undefined reference to `__imp_connect'
src\Client.o: In function `int boost::asio::detail::socket_ops::call_setsockopt<int>(int boost::asio::detail::socket_ops::msghdr::*, unsigned long long, int, int, void const*, unsigned long long)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:1340: undefined reference to `__imp_setsockopt'
src\Client.o: In function `int boost::asio::detail::socket_ops::call_getsockopt<int>(int boost::asio::detail::socket_ops::msghdr::*, unsigned long long, int, int, void*, unsigned long long*)':
C:/MinGW/Boost/include/boost-1_53/boost/asio/detail/impl/socket_ops.ipp:1426: undefined reference to `__imp_getsockopt'
collect2.exe: error: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 4033 ms.
I'm assuming I've gone wrong somewhere when linking the libraries. Could somebody please explain what the author of that tutorial meant by
Under libraries, add the specific boost libraries you need.
For example I have added:
boost_thread-mgw47-mt-d-1_52
boost_system-mgw47-mt-d-1_52
and explain (in detail) how to go about this in Eclipse please (for both Debug and Release)? Thanks.
Oh and if you want the code, it's simply the code found here.
Upvotes: 1
Views: 2401
Reputation: 14730
The errors you get are indeed linking errors, because of missing libraries (probably the ones you list).
A quick search led to these two SO entries:
Note that in certain versions of eclipse/CDT there's a Library tab in the symbols & path configuration window, but it doesn't seem to be present in all versions, so you must resort to the linker configuration panel as explained in the answers linked above.
If you went through the previous tutorial from the same site you link in your question (the one about setting up eclipse and cdt), and managed to get the sample programme compiled, then the 2 boost libraries are the only missing. Otherwise, you might need to add a few others (some of the missing symbols in the error messages pertain to the winsock system library).
Upvotes: 1