Template Instantiation : LNK2001



  • Hallo,

    ich möchte in einer Template-Funktion auf einen bestimmten Datentyp zugreifen:

    //Template.h:

    template<typename T> extern void TEMPLATEFUNC(T*& ...)

    {

    ...
    Namespace::Datentyp.DoSomeThing(..);

    }

    Der Datentyp ist in einem Namespace deklariert:

    //Namespace.h:

    namespace Namespace
    {

    extern DatentypeXY Datentyp;
    ...
    }

    //Namespace.cpp:

    namespace Namespace
    {

    DatentypeXY Datentyp;
    }

    Den ganzen Kram stellt eine Dll bereit.

    Beim Versuch die Template-Funktion in einer exe zu verwenden kommt der folgende Linker Fehler unter VC++ 6.0:
    ...
    LNK2001: Nichtaufgeloestes externes Symbol: class DatentypeXY Namespace::Datentyp

    Kann man globale Daten überhaupt in einer Template Funktion verwenden, oder gibts hier Probleme bei der Instantiierung?

    Grüsse



  • Hmm muss man das nicht kennzeichnen, dass es eine dll sein soll?
    Mit dllimport. Kann leider gerade nicht kucken wie die deklaration genau aussehen muss.



  • So glaub ich
    extern __declspec( dllexport ) Typ varName;



  • Es scheint tatsächlich zu funktionieren, wenn ich den Datentyp aus der Dll exportiere. Dies wäre allerdings ein richtiger Schönheitsfehler, wenn ich den Datentyp für außen zugänglich machen müsste...

    Trotzdem vielen Dank, ich hoffe, es gibt noch eine andere Lösung...???


Anmelden zum Antworten