2014-11-10 4 views
0

개체 파일을 컴파일 한 다음 "theLib"의 함수에 대한 정의되지 않은 참조가 있다는 이유로 실패한 실행 파일을 컴파일하려고했습니다. (내가 한 어느 나는 모든 곳에서 답을 확인개체를 컴파일 한 후 공유 라이브러리를 연결할 때 오류가 발생했습니다.

, 그들은 모든 단지 종속 후 -ltheLib 부분을 이동 제안 :

g++ -I./theLib/src -c -o obj/main.o src/main.cpp 

g++ -L./theLib -Wl,-rpath=./theLib obj/main.o -ltheLib -o exe 

(libtheLib.so: undefined reference to 'some_function' 오류) (지금까지 작동)). 하지만 여전히 작동하지 않습니다. 정말로 내 마음을 불허하는 것은 동일한 라이브러리가 다른 디렉토리에있는 예제를 위해 잘 컴파일된다는 것입니다.

라이브러리가 C에 있습니다. C++ 컴파일을 망칠 수 있습니까? 또는 .o 파일을 먼저 컴파일하는 중 뭔가가 누락 되었습니까?

+0

C++ 코드에서 사용중인'theLib '의 함수에'extern "C"'를 사용합니까? –

+0

라이브러리 헤더에는 yes가 포함됩니다. – Sefu

+0

도서관이 다른 도서관의 일부를 언급하는 것은 드문 일이 아닙니다. 아마도 lib에 대한 의존성을 찾아 링커 명령 줄에 추가해야 할 것입니다. – lothar

답변

1

내 소스 코드에서 구현하고 제공해야하는 기능에 따라 라이브러리가 유용합니다. 나는 어떤 도서관이 그 일을했지만 몰랐던 교훈을 결코 알지 못했다. 오류의 원인이되는 기능을 구현하고 해당 소스 파일을 추가하면 효과적입니다.

관련 문제