2011-11-09 2 views
1

C++에서 일부 코드 (정적 라이브러리)를 작성했습니다. (C 호환성 - 'extern C'등등), 그 다음에 사용하고 싶습니다. 내 C 응용 프로그램.C 라이브러리에 정적 C++ 라이브러리 연결하기

내 C 응용 프로그램을들이받은 메신저, 난 오류가 발생했습니다 경우 : 내가

를 가정 아칸소 실행 OBJ 파일에 다음 -std=c++0x -lstdc++ 플래그

:

undefined symbol: _ZTISt9exception 

C++ 코드와 GCC로 컴파일 그 기호는 C++ 라이브러리에서 직접옵니다. 내 C app을 컴파일 할 때 makefile에 C++ lib를 추가하면 오류없이 컴파일이 완료됩니다.

무엇이 잘못되었을 수 있습니까? 모든 도움을

들으

+0

가능한 [C 코드에서 C++ 라이브러리 사용] (http://stackoverflow.com/questions/199418/using-c-library-in-c-code) –

답변

1

정적 라이브러리는 링크되지 않으며 아카이브에있는 오브젝트 파일의 모음입니다. libxxx.a과 같은 모든 파일 이름은 정적 라이브러리이고 libyyy.so과 같은 파일은 동적 라이브러리입니다.

이것은 라이브러리의 외부 기호가 링크되어 실행 파일을 만들 때까지 해결되지 않는다는 것을 의미합니다. 그런 다음 라이브러리에 필요한 모든 라이브러리 파일도 필요합니다.

1

당신은 C++ 런타임 라이브러리 (-lstdc++)와 함께 최종 실행 파일을 연결해야합니다; C++ 객체를 컴파일 할 때 아무런 영향을 미치지 않고 실행 파일 만 연결합니다.

관련 문제