2009-11-26 4 views
6

Launchy의 소스를 다운로드하여 Visual Studio 2005에서 빌드하려고합니다. Launchy 프로젝트는 VC7을 사용하여 빌드되므로 프로젝트 파일을 VC8로 업데이트해야 프로세스가 잘 진행된 것 같습니다. . 그러나 Launchy도 Boost 1.33.1 라이브러리를 사용하고 있으며, 내가 만든 빌드는 Boost 1.41.0 라이브러리 (최신 libs를 훨씬 쉽게 빌드하기위한 부스트)이기 때문에 프로젝트를 업데이트하여 새로운 Boost 라이브러리가 설치됩니다. 지금은 다음 링커 오류가 발생합니다 :부스트 lib 링커 오류 Visual C++

fatal error LNK1104: cannot open file 'libboost_regex-vc80-mt-sgd-1_41.lib' 

내가 부스트 lib 디렉토리 내가 찾을 수있는 가장 가까운에보고 ...

libboost_regex-vc80-mt-gd-1_41.lib 

공지 사항 누락 's'를했다. libs의 차이점과 Visual Studio가 잘못된 것을 찾고 있는지 또는 Boost 빌드 프로세스가 올바른 라이브러리를 작성하지 못했는지 이해할 수 없습니다. 아무도 올바른 방향으로 나를 가리킬 수 있습니까?

는 실험, 나는 내가 가지고있는 정규식 lib 디렉토리의 사본을 만들어 링커가 찾고있는 무엇에 이름. 즉 나에게 다음과 같은 이미 msvcrtd.lib에 정의 된 기호에 대한 링커 오류의 긴 목록을 제공합니다

error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" ([email protected]@[email protected]@@Z) already defined in libcmtd.lib(typinfo.obj) 

내가 부스트에게 1.33.1 libs와를 구축하고 나의 Launchy에 프로젝트 파일을 가리 키도록 노력할 것입니다 대신. 하지만 여전히 부스트 1.41.0 라이브러리에 무엇이 잘못되었는지 알고 싶습니다.

편집 : 올바른 사람이

Use this library when linking statically to the C++ standard library and compiler runtime support libraries.

그래서이 보이는 년대 'libs와 같은 : 나는 년대'libs와이 무엇인지에 대한 참조 in the Boost docs을 발견했다. 이제는 어떻게 구축해야하는지 알아야합니다.

해결책 : 다음 명령 줄을 사용하여 누락 된 부스트 라이브러리를 빌드 할 수있었습니다.

bjam --build-type=complete msvc stage 

부스트가있는 dir에서 이미 boostrap.bat를 실행 한 후에 실행했습니다.

+0

건물을 짓는 것을 원하지 않는다면, 여기에서 얻을 수 있습니다 : http://boost.teeks99.com – teeks99

답변

10

차이는 clearly described in Boost docs입니다 - "MT-SGD는" "디버그 기호 디버그, 정적으로 링크 된 런타임 라이브러리, 멀티 스레드"를 의미한다. "mt-gd"는 동일하지만 동적으로 링크 된 런타임 라이브러리 (libcmtd.lib 대신 msvcrtd.lib)를 사용합니다.

어느 변화 프로젝트 설정 (예 :/MDD 대신 MTD /의)를 연결하는 동적 CRT를 사용하거나 정적 링크 사용하여 부스트를 구축 - 제대로 작동하지 않습니다 사람들을 혼합합니다.

3

부스트를 빌드하는 데 사용한 명령은 무엇입니까? build-type = complete를 지정하십시오. 일반적으로 s libs도 빌드해야합니다.

+0

나는 그것을 시험해 보겠습니다. 나는 build-type을 지정하지 않고 빌드했다고 생각합니다. – Parappa

+0

작동 중! 다시 한번 감사드립니다. – Parappa

+0

그것은 나를 위해 작동하지 않습니다. s- 라이브러리는 빌드되지 않습니다. boost 1.54 – Max