정적 라이브러리 libTheLib.a
(다른 누군가가 컴파일 함)이 있습니다. 내 프로그램과 연결하려고합니다. 이 lib가 연결에 필요한 기능 중 하나는 GetName
입니다. 나는 내 프로젝트에 함수 void GetName(char*, int)
을 가지고 있지만 링커는 여전히 심볼이 발견되지 않는다고 불평하고있다. lib가 다른 서명을 가진 함수를 찾고 있을지도 모릅니다. 나는 그것이 정확히 찾았다되는 내용 공개 바라고 nm
를 사용했지만, 그것이 말하는 모든 매우 도움이되지 않습니다정적 라이브러리에서 외부 심볼의 예상 된 심볼
U _GetName
입니다. 찾고있는 심볼의 서명을 찾는 또 다른 방법이 있습니까? 또는 서명이 기호의 일부가 아니며 실제로 해당 이름의 기호에 연결할 수 있습니까?
은 lib가 C++
에, C
에 내 프로그램을 작성하지만,이 clang
하지 gcc
을 사용하고 또한
extern "C" GetName(char* c, int i) {...}
로 차이 (사용 엑스 코드)를 만드는 경우 함수는 선언
C에서 이름 변환은 없으므로 기능 서명을 쉽게 찾을 수 없습니다. 정확한 링커 오류는 무엇입니까? –
@ H2CO3 오류 : '정의되지 않은 기호 : "_GetName", libTheLib.a (bar.o)의 foo에서 참조 됨 ld : 기호를 찾을 수 없음 – baruch
정말 'extern' .cpp 파일에서 볼 때 C ""? 이름 mangling 문제처럼 보인다. –