how to compile and link embedded template class with g++

robin armrobin@21cn.com
Thu May 19 20:39:00 GMT 2005


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



More information about the Gcc-help mailing list