CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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 때문인 듯 한데... ^^;
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.