包含boost库时未定义的引用

时间:2010-02-28 19:33:53

标签: c++ boost boost-asio

我正在尝试使用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 

我一直在努力推动工作一段时间,并且非常感谢任何有关此事的帮助。提前谢谢。

3 个答案:

答案 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