Problem with templates and Dll export

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Marc André Ueberall

    Problem with templates and Dll export

    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(dlle xport) CSingleton
    {
    static T *lpSingleton;

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

    static T &GetSingleton(v oid);
    static T *GetSingletonPt r(void);
    };

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

    class DUSKENGINE_API CTextureManager : public CSingleton<CTex tureManager>
    {
    public:
    CTextureManager (void);
    ~CTextureManage r(void);
    };

    When compiling this I get the following errors:

    ....
    CTextureManager .obj : error LNK2001: "public: __thiscall
    DuskEngine::Cor e::CSingleton<c lass
    DuskEngine::Ren derer::CTexture Manager>::CSing leton<class
    DuskEngine::Ren derer::CTexture Manager>(void)" (??0?$CSingleto n@VCT
    extureManager@R enderer@DuskEng ine@@@Core@Dusk Engine@@QAE@XZ)
    CTextureManager .obj : error LNK2001: "public: __thiscall
    DuskEngine::Cor e::CSingleton<c lass
    DuskEngine::Ren derer::CTexture Manager>::~CSin gleton<class
    DuskEngine::Ren derer::CTexture Manager>(void)" (??1?$CSingleto n@VC
    TextureManager@ Renderer@DuskEn gine@@@Core@Dus kEngine@@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


  • Param

    #2
    Re: Problem with templates and Dll export

    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


    "Victor Bazarov" <v.Abazarov@att Abi.com> wrote in message
    news:vi0gder568 bae9@corp.super news.com...[color=blue]
    > "Marc André Ueberall" <mueberall@dusk engine.de> wrote...[color=green]
    > > ...
    > >
    > > How do I export home-brew-templates and classes that are using them in a
    > > dll???[/color]
    >
    > Exporting from a DLL is not defined by the C++ language. Please
    > post your compiler-specific question to microsoft.publi c.vc.language.
    >
    > Victor
    >
    >[/color]


    Comment

    Working...