thanks, Guntaka! Nurbs++ project put the all template implementation in the header files, like as vector.h, barray.h ... discourage me, that I include the header file and explicitly indicating the libs, error always is here !!! Robin On Thu, 2005-05-19 at 14:22 -0700, Vidyasagara Guntaka wrote: > Robin, > > This might help you: > > Try including the corresponding Template Implementation file instead of > the declaration file. For Example: > Consider the case where one declares MyTemplateClass in > MyTemplateClass.h and the definition is put in MyTemplateClass.cpp. Now > if you want to use the MyTemplateClass, you have to include > MyTemplateClass.cpp NOT MyTemplateClass.h. You have to do this for all > the template based classes. Otherwise there will be undefined symbols. > > Regards, > Sagar. > On Fri, 2005-05-20 at 04:42 +0800, robin wrote: > > Hi, all: > > > > I arm using the libnurbs library in my project, > > the libnurbs is a Nurbs spline project, > > http://libnurbs.sourceforge.net > > this project widely use the emdded template class as data type. > > > > I just want to test the libnurbs with my below code: > > > > -------------- > > /* > > * file mynurbs.cpp > > */ > > > > #include <nurbs++/nurbs.h> > > > > // testing of interpolation and approximation > > > > using namespace PLib; > > > > int main(void) > > { > > int i; > > > > int deg = 3; > > Vector_HPoint3Df P(10); // this is linking error sentenc > > > > printf("Test nurbs++ !\n"); > > return 0; > > } > > > > ---------------------- > > > > and compile the code with below command: > > > > $ g++ -o mycurve mycurve.cpp > > > > but some error was prompted to me: > > > > ------------------------- > > > > /tmp/ccWEpvZI.o(.gnu.linkonce.t._ZN4PLib6VectorINS_9HPoint_nDIfLi3EEEED1Ev+0x16): In function `PLib::Vector<PLib::HPoint_nD<float, (int)3> >::~Vector [in-charge]()': > > : undefined reference to `PLib::BasicArray<PLib::HPoint_nD<float, > > (int)3> >::~BasicArray [not-in-charge]()' > > /tmp/ccWEpvZI.o(.gnu.linkonce.r._ZTVN4PLib6VectorINS_9HPoint_nDIfLi3EEEEE+0x10): undefined reference to `PLib::BasicArray<PLib::HPoint_nD<float, (int)3> >::reset(PLib::HPoint_nD<float, (int)3>)' > > /tmp/ccWEpvZI.o(.gnu.linkonce.t._ZN4PLib6VectorINS_9HPoint_nDIfLi3EEEEC1Ei+0x14): In function `PLib::Vector<PLib::HPoint_nD<float, (int)3> >::Vector[in-charge](int)': > > : undefined reference to `PLib::BasicArray<PLib::HPoint_nD<float, > > (int)3> >::BasicArray[not-in-charge](int)' > > /tmp/ccWEpvZI.o(.gnu.linkonce.t._ZN4PLib6VectorINS_9HPoint_nDIfLi3EEEED0Ev+0x16): In function `PLib::Vector<PLib::HPoint_nD<float, (int)3> >::~Vector [in-charge deleting]()': > > : undefined reference to `PLib::BasicArray<PLib::HPoint_nD<float, > > (int)3> >::~BasicArray [not-in-charge]()' > > collect2: ld returned 1 exit status > > > > -------------- > > > > why? what should I do that in order to compiling and linking the > > templated classes with g++? > > > > > > thanks in advanced > > Robin > > > > >