허메 정적라이브러리.........

gloomyr의 이미지

hirate_datapump.c:(.text+0xb): undefined reference to `hiratedp_cmn_'
hirate_datapump.c:(.text+0x17): undefined reference to `hiratedp_cmn_'
hirate_datapump.c:(.text+0x23): undefined reference to `hiratedp_cmn_'
hirate_datapump.c:(.text+0x2f): undefined reference to `hiratedp_cmn_'
hirate_datapump.c:(.text+0x3b): undefined reference to `hiratedp_cmn_'

일단 에러메세지는 이겁니다. 간단하죠.. 정의안되어 있다...

근데 모르겠습니다 -_-;
어떤식이냐면 a.c 에 전역변수들 정의해놓고
a.h 에 extern 으로 다 선언합니다.

나머지쓰는데서는 #include "a.h"해서 땡겨쓰고요

컴파일해서 *.o 목적파일들을
ar rcs libaa.a $(DIR)/*.o
해서 정적라이브럴 만들어서

컴파일할때 -L(DIR) -laa 추가시켜서 씁니다.
근데 정의안되어잇다고 저에러...... 왜이럴가요??

라이브러리 만들기위해서 내부에서 컴파일하면 컴파일 에러없이 잘됩니다.
조언좀 해주세요!

furmuwon의 이미지

분명 함수 원형이랑 본문이 있는데 링크시에 못찾는다고 나오면...

라이브러리 소스가 .cpp 로 되어 있지 않나요?

네임맹글링을 조심스럽게 추측해 봅니다.

kdw2rao의 이미지

혹시 gcc -L(dir) -laa hirate_datapump.c 하셨나요?
그렇다면 다음처럼 순서를 바꿔보세요. gcc hirate_datapump.c -L(dir) -laa

gloomyr의 이미지

이거참..
이것저것 해보다가 그냥 손놓고 있엇는데
문득 눈에보이더군요

extern struct{
...
...
...
}hitrat_cmm_;
..

그렇습니다. ㅋㅋ struct 가 extern 이였던 겁니다.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
extern의 실 struct를 가지고있는 .c파일이 없었던겁니다....

휴 매일 extern int x; extern bool a;
이런것만 보다가 extern struct{}..
눈에 보고있었어도 퍼뜩 떠오르지 않더군요 ㅋㅋ ㅜㅜ