Export von Template-Klassen in DLL



  • Hallo,

    ich hab schon in Google gesucht und folgenden Satz gefunden:

    Instantiiere deine templates nur innerhalb der DLL. Dazu musst du sämtliche template-Variablen als Pointer deklarieren und den explizit im Konstructor mit 'new' erstellen (z.B. std::list <CResourceTree*> *m_pChildlist).

    Allerdings kapier ich den irgendwie nicht. Instantiieren? Innerhalb der DLL? Ich kenne Instanzen, also Objekte von Klassen, die man instantiiert. Aber die will ich in der WinMain() und nicht in der DllMain().

    Und warum sollte ich Templatevariablen als Pointer deklarieren?

    ...danke schon mal.



  • Dieser Thread wurde von Moderator/in flenders aus dem Forum WinAPI in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • *push*



  • Man unterscheidet zwischen der impliziten und expliziten Template-Instanziierung. Bei der expliziten Template-Insanziierung steht am Anfang immer ein template gefolgt von der Klassen- oder Funktionsdeklaration, z.B.:

    //implizit
    A<int> a;
    
    //explizit
    template struct A<int>;
    template void foo(int, double);
    //...
    

    Template-Parameter müssen bereits zur Compile-Zeit bekannt sein, beim Exportieren eines Templates aus einer dll ist es aber nicht der Fall.


Anmelden zum Antworten