g++
으로 라이브러리를 컴파일했는데 gcc
으로 링크하고 싶습니다.
문제는 링크하는 동안 오류가 발생하는 것이다 :공유 라이브러리의 심볼 주위에서 주변 문자를 제거하는 방법은 무엇입니까?
정의 참조 functionName` '에
함수이지만
(FUNCTIONNAME 라이브러리에서 함수 이름) 심볼 목록에 존재하며 링크하는 동안 gcc
의 경로를 지정합니다.
함수가 (난이 오버라이드 (override)에 대한 생각?) 문자를 주변으로 목록에 나타납니다 때문에 발생합니다 Z12functionNameiSt9__va_list
나는 그게 내가 extern "C"
와 함수 선언을 둘러싸고해야 이러한 문자를 제거하기 위해 알고 .
//header.hpp
extern "C" int functionName(int argc, ...);
그러나 주변의 문자가 여전히 기호 목록에서 함수 이름 주위에 나타납니다 그리고 나는 것을했다. 그리고 그 이유는 gcc
찾을 수 없습니다.
나는 우분투 데스크탑 (16)
에 arm-poky-linux-gnueabi-gcc
및 arm-poky-linux-gnueabi-g++
와 리눅스 팔 yokto 크로스 컴파일이 왜 주변 문자가 제거되지 않는거야 어떻게 내가 그들을 제거 할 수 있습니까? 나는 결코이 함수를 오버라이드하지 않을 것이다. 그래서 이것이 정말로 오버 라이딩된다면 나는 그것들을 필요로하지 않는다.
편집 :
해결. 선언의 함수 시그니처가 정의의 시그니처와 다릅니다 ... 따라서 extern
키워드는 아무 것도 아닙니다.
int functionName(int argc, ...); //declaration
int functionName(int argc, va_list args) //definition
아마도 # #include를 잊어 버렸을 것입니다. –
@BasileStarynkevitch - 포함되어 있습니다. –