DLL's and templates

Brimhall, GeoffreyX L geoffreyx.l.brimhall@intel.com
Mon May 31 21:10:00 GMT 1999


You're not using the template invocation correctly:

static B b;		// Incorrect, based on the example you gave.
			// Compiler should have not even allowed the
			// linkage stage, so you're definately missing
			// something in your code example !

It needs something like this:

class C
{
	int m_dummy;
};

static B<C> b;	// This is correct.

My suspicion is the C class, which you left out, has some virtual functions
in it which you have not filled out ?

-----Original Message-----
From: Schaible, Joerg [ mailto:Joerg.Schaible@gft.de ]
Sent: Thursday, May 06, 1999 12:13 AM
To: 'cygwin-list'
Subject: DLL's and templates


Hello,

currently I am trying to link my own first DLL (Mumits samples worked quite
well), but I got unresolved externals for the vtable of all template classes
used within my DLL. Typically following code:

// header.h

class __declspec(dllexport) A
{
public:
	A() {}
	virtual ~A() {} 
};


template <class X>
class B : public A
{
public:
	B() {}
	virtual ~B() {}
};


// module.cxx

static B b;


Compiling and linking the DLL I will have an unresolved external vor the
vtable of B or for inlined virtual destructors. B is not necessarily
exported.

Original error messages:
..\egcs112\rel\gwbase\sh\gwstrsb.o(.text+0x2ba3):gwstrsb.cc: undefined
reference to `GwSingletonClass<GwMemoryCluster>::~GwSingletonClass(void)'
..\egcs112\rel\gwbase\sh\gwstrwc.o(.text$__t13GwTMemoryPool1Z13GwWCStringImp
i+0x6b):gwstrwc.cc: undefined reference to `GwTMemoryPool<GwWCStringImp>
virtual table'

Greetings Jörg


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com




More information about the Cygwin mailing list