2010-06-02 2 views
5

GCC 대신 MSVC 2010으로 내 응용 프로그램을 빌드하려고합니다. GCC를 사용하면 모든 것이 잘 동작합니다. 내 응용 프로그램은 boost_system 및 boost_thread 라이브러리를 사용합니다. 나는 libs와 C에있는 라이브러리가 바로 libboost_system.lib 이름 (및 libboost_system_compiler_threading_version_wtf_snafu.lib)됩니다 의미 "시스템"레이아웃, 에 VC2010와 후원을 내장 : \ 부스트 \ lib 디렉토리를 메이크는VC++ 2010은 boost libararies를 연결하려고합니다. 지정하지 않았습니다.

LFLAGS  = /NOLOGO /INCREMENTAL:NO /SUBSYSTEM:CONSOLE 
LIBS   = /LIBPATH:C:/Boost/lib libboost_system.lib libboost_thread.lib Ws2_32.lib 
지정 나는 심각하게 의미

LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_43.lib 

으로이 종료 연결을 시도 할 때

그것을 컴파일 NMAKE 호출하지만 때, 무슨 일? 나는 libboost_systen.lib와 libboost_thread.lib를 링크하도록 말했다. 어떻게 libboost_data_time을 링크하려고하는지, 그리고 왜 내가 "태그 된"레이아웃으로 libs를 만든다고 가정 하는가? MSVC가 현명하게 작동하는 것을 멈추고 내가 무엇 에 연결할 수 있는지 짐작할 수 있습니까?

감사합니다, 필립

답변

5

이 자동 연결 호환 컴파일러와 부스트 libs와의 기능입니다.

(그 복잡한 라이브러리 이름은 스레딩 및 플랫폼에서 사용할 수있는 옵션을 연결하는 무수한을 포함, 즉 윈도우에 관한 협약 ... 사용하는 좋은 이유가있다) 여기

더 많은 정보 :

http://www.boost.org/doc/libs/1_33_1/more/getting_started.html#auto-link

더 최신 버전의 페이지를 찾을 수 없지만 BOOST_ALL_NO_LIB 및 관련 옵션이 모두 1.43에서 유효하다고 생각합니다.

+0

안녕하세요, 트릭을 정의했습니다. 감사. – Philipp

1

자동 연결 (즉, BOOST_ALL_DYN_LINK 또는 라이브러리 관련 항목을 정의한 경우)이라고 가정합니다.

BOOST_AUTO_LINK_NOMANGLE 

올바른 라이브러리 이름에 링크 :

레이아웃 '시스템'의 경우에는 처리기 매크로를 정의해야합니다.

BOOST_AUTO_LINK_TAGGED 

올바른 라이브러리 이름에 링크 : 레이아웃

는 처리기 매크로를 정의해야 '태그'.

일부 라이브러리의 경우이 재정의를 수행하고 다른 라이브러리의 기본값을 유지할 수 있는지 여부는 잘 모르겠습니다. 그것은 내가 상상할 수있는 매우 성가신 설치 것입니다.

관련 문제