허메 정적라이브러리.........
글쓴이: gloomyr / 작성시간: 화, 2010/05/11 - 3:29오후
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 추가시켜서 씁니다.
근데 정의안되어잇다고 저에러...... 왜이럴가요??
라이브러리 만들기위해서 내부에서 컴파일하면 컴파일 에러없이 잘됩니다.
조언좀 해주세요!
Forums:
이런 경우는...
분명 함수 원형이랑 본문이 있는데 링크시에 못찾는다고 나오면...
라이브러리 소스가 .cpp 로 되어 있지 않나요?
네임맹글링을 조심스럽게 추측해 봅니다.
link order 일수도
혹시 gcc -L(dir) -laa hirate_datapump.c 하셨나요?
그렇다면 다음처럼 순서를 바꿔보세요. gcc hirate_datapump.c -L(dir) -laa
이거참.. 이것저것
이거참..
이것저것 해보다가 그냥 손놓고 있엇는데
문득 눈에보이더군요
extern struct{
...
...
...
}hitrat_cmm_;
..
그렇습니다. ㅋㅋ struct 가 extern 이였던 겁니다.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
extern의 실 struct를 가지고있는 .c파일이 없었던겁니다....
휴 매일 extern int x; extern bool a;
이런것만 보다가 extern struct{}..
눈에 보고있었어도 퍼뜩 떠오르지 않더군요 ㅋㅋ ㅜㅜ