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