문제

소스를 다운로드했습니다 발사 Visual Studio 2005에서 빌드하려고 노력하고 있습니다. Launchy 프로젝트는 VC7을 사용하여 구축되었으므로 프로젝트 파일을 VC8로 업데이트해야했으며 그 프로세스는 잘 진행되는 것 같습니다. 그러나 Launchy도 사용합니다 후원 1.33.1 Libs와 내가 건설 한 것은 Boost 1.41.0 Libs (보다 최근의 Libs를 훨씬 쉽게 구축 할 수 있도록 부스트 할 소품)이므로 새로운 Boost Libs 설치를 지적하도록 프로젝트를 업데이트했습니다. 이제 다음 링커 오류가 발생합니다.

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

나는 Boost Lib 디렉토리를 살펴 보았고 내가 찾을 수있는 가장 가까운 경기는 ...

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

누락 된 's'를 주목하십시오. Libs의 차이점이 무엇인지, Visual Studio가 잘못된 것을 찾고 있는지 또는 내 Boost 빌드 프로세스를 찾는 지 여부는 올바른 LIB를 구축하지 못했습니다. 아무도 나를 올바른 방향으로 가리킬 수 있습니까?

실험으로, 나는 Regex Lib의 사본을 만들어 링커가 찾고있는 것에 이름을 바꿨습니다. 이는 다음과 같은 MSVCRTD.LIB에 이미 정의 된 기호에 대한 링커 오류의 긴 목록을 제공합니다.

error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in libcmtd.lib(typinfo.obj)

Boost 1.33.1 Libs를 구축하고 대신 내 런칭 프로젝트 파일을 지적하려고 노력할 것입니다. 그러나 나는 여전히 내 Boost 1.41.0 libs에 무엇이 잘못되었는지 알고 싶습니다.

편집하다: 나는 참조를 찾았다 부스트 문서에서 's'libs는 다음과 같습니다.

C ++ 표준 라이브러리 및 컴파일러 런타임 지원 라이브러리에 정적으로 연결할 때이 라이브러리를 사용하십시오.

따라서 'S'리브가 올바른 것 같습니다. 이제 나는 그것들을 구축하는 방법을 알아 내야합니다.

해결책: 다음 명령 줄로 누락 된 부스트 리브를 구축 할 수있었습니다.

bjam --build-type=complete msvc stage

나는 이미 Boostrap.bat를 달린 후 Boost가 살고있는 곳에서 달렸다.

도움이 되었습니까?

해결책

차이점입니다 부스트 문서에 명확하게 설명되어 있습니다 - "MT-SGD"는 "디버그, 디버그 기호가있는 멀티 스레드 (multithreaded)"디버그, 정적으로 연결된 런타임 라이브러리 "를 의미합니다. "mt-gd"는 동일하지만 동적으로 연결된 런타임 라이브러리를 사용합니다 (예 : libcmtd.lib 대신 msvcrtd.lib).

동적 CRT 링크 ( /MTD 대신 예 : /MDD)를 사용하도록 프로젝트 설정을 변경하거나 정적 링크를 사용하여 부스트를 빌드하여 제대로 작동하지 않습니다.

다른 팁

부스트를 구축하기 위해 어떤 명령을 사용 했습니까? 빌드 유형 = 완료를 지정해보십시오. 일반적으로 S Lib도 구축해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top