문제

좋아, 우선 Boost_system과 Boost_filesystem에 연결하겠습니다.

내 컴파일러는 GCC 4.3.2를 사용한 MinGW 맞춤형 빌드

그래서 내가 포함할 때:

#include "boost/filesystem.hpp"

다음과 같은 연결 오류가 발생합니다.

..\..\libraries\boost\libs\libboost_system.a(error_code.o):error_code.cpp:
    (.text+0xe35)||undefined reference to `_Unwind_Resume'|

..\..\libraries\boost\libs\libboost_system.a(error_code.o):error_code.cpp:
    (.eh_frame+0x12)||undefined reference to `__gxx_personality_v0'|

약간의 검색 끝에 C++ 프로그램을 GNU C 컴파일러인 gcc와 연결하려고 할 때 가장 일반적으로 발생하는 것을 발견했습니다.하지만 나는 정확한 빌드 명령을 인쇄했습니다. 코드::블록 실행 중이고 확실히 g++와 연결되어 있습니다.

이 포함 내용을 주석 처리하면 모든 것이 잘 작동합니다.

어떤 아이디어가 있나요?또한, 부스트를 위해 Windows 바이너리를 구할 수 있는 좋은 장소를 아는 사람이 있나요?빌드 시스템에서 문제가 발생하여 이와 함께 제공되는 일부 바이너리를 사용하고 있습니다. 맞춤형 MinGW 패키지

도움이 되었습니까?

해결책

좋아, 문제를 찾았어.조금 복잡합니다.

GCC는 4.x 브랜치에서 점차적으로 IS 14882를 준수하고 있습니다.계속해서 더 이상 사용되지 않는 비표준 불만 사항 기능을 제거하고 있습니다.

4.1.x에서는 더 이상 사용되지 않고 제거되지 않은 것처럼 보이지만 4.3.x에서는 실제로 제거된 것으로 보입니다.이것이 의미하는 바는 4.3.x 이상이 3.x 브랜치(더 이상 사용되지 않고 현재 제거된 기능을 사용함)에서 컴파일된 항목과 일부 이전 버전과의 호환성 문제가 있다는 것입니다.

나는 GCC 3.x, 4.1.x 및 4.3.x로 컴파일된 바이너리의 혼합 및 일치 조합을 사용하고 있었기 때문에 어느 것을 사용하든 비슷한 오류가 발생했습니다. 왜냐하면 적어도 하나의 바이너리를 연결했기 때문입니다. 지금 시도하고 있던 컴파일러와 호환되지 않았습니다.

저는 현재 GCC 4.1.2를 사용하고 있으며 대부분의 바이너리가 이 버전으로 컴파일되었습니다.나는 여전히 3.x의 몇 가지 바이너리를 사용하고 있기 때문에 아직 4.3.x로 업그레이드하지 않습니다.

쓰는 것보다 읽는 것이 덜 혼란스러웠기를 바랍니다.

이것 4.1.x의 일부 문제를 다루는 좋은 게시물인 것 같습니다.

다른 팁

Windows 바이너리:www.boost.org - "시작하기" 페이지를 참조하세요. 하지만 MingGW에서 g++를 사용하는 경우에는 이를 원하지 않습니다.이해하는 간단한 방법은 MingGW는 운영 체제 내부의 운영 체제와 같기 때문에 실제로 Windows를 사용하는 것이 아니라는 것입니다.당신이 가지고 있는 것이 아마도 맞을 것입니다.

코드에 무슨 일이 일어나고 있는지 잘 모르겠지만 lib 파일이 어떻게든 제대로 연결되지 않는 것 같습니다.Boost는 자체적으로 lib 파일의 이름을 지정하므로 실제로는 명시적으로 이름을 지정하지 않지만 올바른 경로에 부스트용 lib 파일이 있어야 합니다(또한 설치/빌드되었는지 확인해야 합니다. 그렇지 않을 수도 있습니다).MingGW를 사용하지 않았고 Visual Studio에서만 Boost를 사용했기 때문에 g++를 사용하여 올바른 경로로 가져오는 방법을 잘 모르겠습니다.

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