2010-02-28 5 views
2

부스트의 asio 라이브러리를 사용하려고하지만 정의되지 않은 참조가 계속 발생합니다. G ++ 컴파일러를 사용하는 Windows의 Dev-Cpp에 있습니다.부스트 라이브러리를 포함 할 때 정의되지 않은 참조

부스트 1.42.0 [link]에 대한 boostprocomputer에서 설치 프로그램을 사용하여 부스트를 설치했습니다. 여기에 내가 만들려고 노력하고있는 테스트 프로그램의 코드는 다음과 같습니다

#include <boost/asio.hpp> 
#include <iostream> 

int main(void){ 
    std::cout << "Boost test." << std::endl; 
} 

내 부스트 헤더 /include 미만 및 향상에 대한 모든 libs와 및 /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 `[email protected]' 
[Linker error] undefined reference to `[email protected]' 
[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

당신이 부스트 라이브러리에 연결하는 위치 횟수 : 마지막에 라이브러리를 넣어이 큰

일을 :) 확인하기 위해 기억 하는가? 머리말을 포함하고 도서관에 연결하는 것은 2 개의 분리 된 개념이다. – nos

+0

라이브러리와 링크를 시도했지만 어느 것이 확실하지 않았습니다. 필자는 시스템 및 iostream 라이브러리와 같은 몇 가지 실험을 시도했지만 매번 같은 결과를 얻었습니다. – rovaughn

답변

5

나는 boost :: asio로 작업 할 때 며칠 전에이 문제가 발생했습니다. boost :: system 라이브러리로 컴파일하고 링크해야합니다.

+0

어떻게 그랬습니까? 내가 찾은 모든 boost_system 및 libboost_system 라이브러리를 연결하려고 시도했지만 동일한 결과가 나타납니다. – rovaughn

+0

@alecRN : russoue의 대답을 확인하십시오. g ++ 인자에'-lboost_system'을 추가하십시오 (실제로 링커에). –

0

libboost_system.a 및 libboost_filesystem.a에 링크해야합니다.

0

나는 netbeans를 사용하므로 추가 행에 '-lboost_system'을 입력했습니다! 그건 실수 였어.

개체 앞에 추가 행이 삽입되므로 동일한 오류가 발생했습니다. 그런 다음 콘솔에서 실행하고 -lboost_system을 VERY END에두면 모든 것을 알 수 있습니다. greate가 작동합니다. 마지막으로 netbeans (라이브러리에서 명령 섹션이 아님)에 설정할 정확한 위치를 찾았고 해당 필드가 끝에 추가되었습니다!

명령을받은 라이브러리가 있으면 계산할 수있을뿐만 아니라 기억하십시오!

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 
+0

"후기 답변"대기열의 검토 자에게 : 이것은 중복 답변입니다. http://stackoverflow.com/questions/5708894/boost-asio-installation-issue/12447535#12447535이 문제를 어떻게 처리해야할지 모르겠습니다. 그래도. – Mysticial

관련 문제