Problem with templates and Dll export

  • Thread starter Marc André Ueberall
  • Start date
M

Marc André Ueberall

Hi there!

I've got the following problem and would be very happy if there is somebody
with a solution! =)

Btw. I'm using Microsoft Visual C++ 6.0 Std Edition

I've generated a template class called "CSingleton"

template <class T>
class __declspec(dllexport) CSingleton
{
static T *lpSingleton;

public:
CSingleton(void);
~CSingleton(void);

static T &GetSingleton(void);
static T *GetSingletonPtr(void);
};

Now I'm going to implement a texture manager (or whatever) like this

class DUSKENGINE_API CTextureManager: public CSingleton<CTextureManager>
{
public:
CTextureManager(void);
~CTextureManager(void);
};

When compiling this I get the following errors:

....
CTextureManager.obj : error LNK2001: "public: __thiscall
DuskEngine::Core::CSingleton<class
DuskEngine::Renderer::CTextureManager>::CSingleton<class
DuskEngine::Renderer::CTextureManager>(void)" (??0?$CSingleton@VCT
extureManager@Renderer@DuskEngine@@@Core@DuskEngine@@QAE@XZ)
CTextureManager.obj : error LNK2001: "public: __thiscall
DuskEngine::Core::CSingleton<class
DuskEngine::Renderer::CTextureManager>::~CSingleton<class
DuskEngine::Renderer::CTextureManager>(void)" (??1?$CSingleton@VC
TextureManager@Renderer@DuskEngine@@@Core@DuskEngine@@QAE@XZ)
....

How do I export home-brew-templates and classes that are using them in a
dll???

Thank you for your comments!


Marc André Ueberall
 
P

Param

Hi
I guess u are right exporting from a DLL is not defined...
But u can try using explicit template instantiation where the Object for the
class is created with some of the known types
i.e. the writer of the class should be aware of the type of instantiations
for that peculiar template class...

This instantiation can be exported from the DLL and then u could use this
class with no Linking errors...

Paramjeet Singh
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,982
Messages
2,570,186
Members
46,743
Latest member
WoodrowMea

Latest Threads

Top