Templates in Dlls



  • Hi,
    1. ich habe DLL als __declspec(dllesport) defint
    2. Ich will eine DLL Templateklasse, die eine DLl-Klasse als Templateparameter enthält in eine weitere DLL-Klasse einfügen, der Compiler meckert aber, dass die Template-Klasse mit dem Templateparameter keien DLL-Schnittstelle hätten, die von den KLienten der dritten Klasse genutzt werden könnte.

    warning C4251: 'allplayers' : class 'Array<class Player *>' benoetigt eine DLL-Schnittstelle, die von Clients von class 'Main_Mediator' verwendet wird

    Ich habe auch schon

    template <class DLL Klasse>
    

    versucht, hat aber nicht funktioniert

    mfg
    Glamdring



  • Template Parameter werden erst zu Compile-Zeit aufgelöst, wie soll das auch gehen...



  • Arghhhhhh! 😡

    Dann ist das also egal? D.h. es hat keine Folgen für die DLL???

    thx
    Glamdring



  • was heißt hier es hat keine Folgen. Woher soll die DLL Template-Klasse wissen welche Parameter du an diese übergibst, denn die ist bereits kompiliert? Du kannst höhstens mit einer Template-Spezialisierung versuchen, aber ich glaube nicht, dass es funktioniert - es macht auch wenig Sinn.



  • Folglich könnte ich die Klasse also nicht aus der DLL holen und benutzen?

    mfg
    Glamdring



  • Wie bereits gesagt:

    template = etwas das wärend dem Übersetzen des Programmes gemacht wird

    DLL = binär = späte Bindung

    Der Typ für ein Temlate muss wärend des Übersetzens bekannt sein und das ist die DLL. Spezialisierung des templates bringt hier auch nix.

    Ahso, total vergessen:

    WEnn DU rausholen sagst, meinst Du dann schon einen konkreten Typ = myclass<int> oder willst Du den Typ erst beim rausholen angeben ?!

    (kenn mich mit Klassen aus DLLs nich wirklich aus O🤡



  • Jaja, ich würde schon den Template Parameter angeben, aber mein Problem ist, dass ich eine KLasse hat die von einer Template-Klasse (samt Parameter) erbt. Der Compiler brinmgt die oben genannte Übung, das hört sich so an, als ob diese KLasse nicht aus der DLL heraus genutzt werden könnte.

    mfg
    Glamdring



  • Übung = Fehlermeldung
    weis auch net wie ich auf so was komm 🤡
    sry
    Glamdring



  • Ok nu hab ich das Problem verstanden aber die Lösungen die ich dazu hab passen nicht 🤡

    btw ist es eine warnung.

    Wenn Du da ne Lösung für hast wäre es nett wenn Du sie postest thx


Anmelden zum Antworten