static library 함수 호출

classicid의 이미지

기초적인 프로그래밍 질문 입니다.

libtest.a 파일을 생성한 후에

라이브러리에 있는 함수를 호출하는 main 함수를 만들고

arm-none-linux-gnueabi-g++ main.cpp =ltest -L./

을 했는데

main.cpp:(.text+0x10): undefine reference to 'test()' 라는 오류가 발생합니다.

main.cpp 에는


#include "../xxx/test.h"

...

test();

...

이런식으로 들어가 있어요.

qiiiiiiiip의 이미지


libtest.a 는 c 로 만들고, 링크는 c++ 로 한다면
링크 타임에서 mangling 된 함수 이름을 찾기때문에 발생하는 문제일 수 있습니다.

nm libtest.a 를 해서
test 앞뒤에 이상한 문자가 붙어있다면
test 함수의 선언 앞에 extern "C" 를 붙여서 해보세요.