我正在尝试使用boost的asio库,但我一直在获取未定义的引用。我在Windows上使用Dev-Cpp,它正在使用G ++编译器。
我使用boostpro computing的安装程序为Boost 1.42.0 [link]安装了boost。这是我试图制作的测试程序的代码:
#include <boost/asio.hpp>
#include <iostream>
int main(void){
std::cout << "Boost test." << std::endl;
}
我的提升包括标题在/include
下,所有用于提升的库都是直接编译在/lib
之下。似乎有一些图书馆没有被收录,但我不知道是什么。我试过包括一些可能的但无济于事。
我得到的链接器错误类型是:
[Linker error] undefined reference to `boost::system::get_system_category()'
[Linker error] undefined reference to `boost::system::get_generic_category()'
[Linker error] undefined reference to `boost::system::get_generic_category()'
[Linker error] undefined reference to `boost::system::get_generic_category()'
[Linker error] undefined reference to `boost::system::get_system_category()'
[Linker error] undefined reference to `WSACleanup@0'
[Linker error] undefined reference to `WSAStartup@8'
[Linker error] undefined reference to `boost::system::get_system_category()'
ld returned 1 exit status
C:\Dev-Cpp\Projects\Boost Test\Makefile.win [Build Error] [boostTest.exe] Error 1
我一直在努力推动工作一段时间,并且非常感谢任何有关此事的帮助。提前谢谢。
答案 0 :(得分:5)
几天前使用boost :: asio时遇到了这个问题。您需要编译并与boost :: system库链接。
答案 1 :(得分:0)
您必须链接到libboost_system.a和libboost_filesystem.a。
答案 2 :(得分:0)
我使用netbeans所以我在其他行中输入'-lboost_system'!这是一个错误。
其他行放在对象之前,因此我有同样的错误。然后我发现如果我从控制台运行并将-lboost_system放在非常结束时一切都很有效。最后,我找到了在netbeans中设置的正确位置(在库中没有命令部分),并且该字段最后添加了它!
请记住,不仅仅计算你是否有命令库! THE POSITION确实算了:)记得将库放在最后并验证它:)
工作得很好:
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -c -g -MMD -MP -MF async_client.o.d -o async_client.o async_client.cpp
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -o async_client async_client.o -lws2_32 -lboost_chrono -lboost_system -lboost_thread
不起作用:
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -c -g -MMD -MP -MF async_client.o.d -o async_client.o async_client.cpp
g++.exe -D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -lws2_32 -lboost_chrono -lboost_system -lboost_thread -o async_client async_client.o