2012-01-27 3 views
0

부스트 스레드 라이브러리를 사용 중이며 Visual Studio에서 링크 문제가 발생했습니다.Visual Studio 부스트 스레드/MT 연결 문제

지금은/MT를 사용하여 VS 프로젝트를 컴파일 중입니다. 내가 링크하고있는 라이브러리는 libboost_thread-vc100-mt-1_48.lib이라고 불리우며/MT를 사용하여 컴파일되었음을 나타냅니다.

그러나, 나는 내 링커 설정에서 모든/MD 관련 라이브러리의 전원을 끌 경우 (속성 -> 링커 -> 입력 -> 특정 기본 라이브러리 무시) ...

msvcrt.lib 
msvcrtd.lib 
msvcprt.lib 
msvcprtd.lib 

가 그럼 난 링커 오류를 얻을!

libboost_thread-vc100-mt-1_48.lib(thread.obj) : error LNK2001: unresolved external symbol __imp___gmtime64 
libboost_thread-vc100-mt-1_48.lib(thread.obj) : error LNK2001: unresolved external symbol __imp___beginthreadex 

/MD 관련 라이브러리를 끄면 어떻게 가능합니까? boost :: thread는/MT (LIBCMT.LIB, LIBCPMT.LIB 여야 함)의 libs에 대해서만 연결해야합니다. 내가 부스트를 잘못 컴파일 했나요?

답변

1

BAM! 링커가 패했다!

내 직감처럼 보입니다. 나는 정확하게 부스트를 컴파일하지 않았다. boost 빌드를 사용하여/MT를 에뮬레이션하려면 정적 런타임 라이브러리에 링크해야합니다 (동적 런타임 라이브러리에 링크하는 것이 기본값 인 것 같습니다).

명령이 작업을 수행하기 위해 (부스트의 릴리스 빌드 : 스레드)이었다

.\b2 --with-thread variant=release link=static threading=multi runtime-link=static 

희망이/MT는 자신의 프로젝트에서 켜져와 부스트를 사용하는 사람이 거기에 있습니다!