| [ CnUnix ] in KIDS 글 쓴 이(By): guest (Crusader) 날 짜 (Date): 1996년05월24일(금) 23시22분11초 KDT 제 목(Title): [Q] ld: Undefined symbol?? c++ 프로그램을 하나 만들었는데, 서로 링킹이 안 되는 듯 합니다. template 를 이용해 짠 집합 ( set ) 을 다루는 class 를 만들었습니다. 다음은 그 class 의 헤더 화일입니다. --- set.h --- #include <iostream.h> template<class T> class set { public: set( void ); set( const T*, unsigned int size ); set( const set<T>& ); ~set( void ); T& operator[]( unsigned int ) const; set<T> operator+( const set<T>& ) const; set<T> operator*( const set<T>& ) const; set<T> operator-( const set<T>& ) const; set<T>& operator=( const set<T>& ); unsigned int assign( const T*, unsigned int size ); unsigned int length( void ) const; void Show( void ) const; private: T* data; unsigned int size; }; --- end of set.h --- 그리고 set.cc 라는 화일에서 set.h 를 include 한 다음. 각 함수를 구현 했고요. main.cc 에서도 set.h 를 include 해서 함수를 만들었습니다. make 화일은 다음과 같습니다. --- Makefile --- set : main.o set.o g++ -o set main.o set.o main.o : main.cc g++ -o main.o -c main.cc set.o : set.cc g++ -o set.o -c set.cc --- end of Makefile --- 그런데 make 를 수행하면 다음과 같은 메세지가 나옵니다. % make g++ -o main.o -c main.cc g++ -o set.o -c set.cc g++ -o set main.o set.o ld: Undefined symbol ___t3set1ZiPCiUi ___ml__Ct3set1ZiRT0 ___pl__Ct3set1ZfRT0 _Show__Ct3set1Zf ___mi__Ct3set1ZiRT0 ___t3set1ZfPCfUi _Show__Ct3set1Zi __$_t3set1Zf __$_t3set1Zi ___mi__Ct3set1ZfRT0 collect2: ld returned 2 exit status *** Error code 1 ( main.cc 의 main() 함수에 아무것도 안 쓰면 메세지는 안 나옴 ) 그런데 이상한 건, 위에 있는 화일들을 set.h, set.cc, main.cc 순으로 한 화일로 합쳐서 ( ex.cc 라 치고 ), g++ -o set ex.cc 라면 잘 컴파일 되고, 실행 된다는 겁니다. 뭐가 잘못된 건지요. TIA @ 아무래도 template 때문인 듯 한데... ^^; |