[EDIT]
Es liegt nicht an den Templates. Auch wenn ich direkt in main() eine Instanz der Klasse Blubb (ohne Templates) erzeuge, kommt der LNK2019 Fehler.
Hmm, sehr komisch ...
-------------------------------------------------------------------------------------------------------------
Hallo Leute
,
bin neu hier da ich langsam an einem Fehler verzweifle und hoffe dass Ihr mir dabei helfen könnt
!
Und zwar rufe ich aus einer Main-Klasse (ist in einer eigenen .dll), eine Template Funktion: TempBlubb auf. Diese liegt in einer zweiten .dll - wurde auch mit __declspec(dllexport) exportiert. Funktioniert auch wunderbar soweit.
Nun habe ich aber das Problem, dass wenn ich von der Funktion TempBlubb, ein Objekt irgendeiner eigenen ganz simplen Klasse Blubb erzeuge (liegt in der selben .dll und selben Directory - besteht nur aus einem CTor und DTor und wurde auch nicht exportiert), Fehler kommen für jede aufgerufende Methode dieser Klasse (also zurzeit CTor und DTor). Habs abgekürzt (jeweils mit ...):
Hab den Fehler schon eingeschränkt: Wenn ich den CTor und DTor der Klasse Blubb direkt im Header implementiere funktioniert es! Ich will und mach das aber nicht, da die Header Datei einfach zu groß werden würde.
Also: Main ruft Template Funktion -> Template BlubbTmp Funktion erstellt Klasse Blubb --> Blubb Klasse LNK2019 Fehler bei jeder aufgerufenen Methode.
Hab auch die Templates ganz normal im Header (und nicht in die cpp ausgelagert) - also da ist der Fehler nicht (wie Google 1000e Lösungen brachte).
Kann mir jemand eine Lösung dafür sagen, oder ist die einzige Möglichkeit es zu lösen, den gesamten Code der Klasse Blubb in der Header Datei zu implementieren? Ich dachte immer mit den Deklarationen in der Header sollte alles passen. Wundere mich deshalb, warum er schon die komplette implementierung einer ganz normalen Klasse verlangt!
Es liegt nicht an den Templates. Auch wenn ich direkt in main() eine Instanz der Klasse Blubb (ohne Templates) erzeuge, kommt der LNK2019 Fehler.
Hmm, sehr komisch ...
-------------------------------------------------------------------------------------------------------------
Hallo Leute

bin neu hier da ich langsam an einem Fehler verzweifle und hoffe dass Ihr mir dabei helfen könnt

Und zwar rufe ich aus einer Main-Klasse (ist in einer eigenen .dll), eine Template Funktion: TempBlubb auf. Diese liegt in einer zweiten .dll - wurde auch mit __declspec(dllexport) exportiert. Funktioniert auch wunderbar soweit.
Nun habe ich aber das Problem, dass wenn ich von der Funktion TempBlubb, ein Objekt irgendeiner eigenen ganz simplen Klasse Blubb erzeuge (liegt in der selben .dll und selben Directory - besteht nur aus einem CTor und DTor und wurde auch nicht exportiert), Fehler kommen für jede aufgerufende Methode dieser Klasse (also zurzeit CTor und DTor). Habs abgekürzt (jeweils mit ...):
Code:
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
""public: __thiscall ITC::Blubb::Blubb(void)" ..."
in Funktion
""void __cdecl ITC::TempBlubb(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int &, ...)" (...)".TempBlubb.obj
Hab den Fehler schon eingeschränkt: Wenn ich den CTor und DTor der Klasse Blubb direkt im Header implementiere funktioniert es! Ich will und mach das aber nicht, da die Header Datei einfach zu groß werden würde.
Also: Main ruft Template Funktion -> Template BlubbTmp Funktion erstellt Klasse Blubb --> Blubb Klasse LNK2019 Fehler bei jeder aufgerufenen Methode.
Hab auch die Templates ganz normal im Header (und nicht in die cpp ausgelagert) - also da ist der Fehler nicht (wie Google 1000e Lösungen brachte).
Kann mir jemand eine Lösung dafür sagen, oder ist die einzige Möglichkeit es zu lösen, den gesamten Code der Klasse Blubb in der Header Datei zu implementieren? Ich dachte immer mit den Deklarationen in der Header sollte alles passen. Wundere mich deshalb, warum er schon die komplette implementierung einer ganz normalen Klasse verlangt!
Zuletzt bearbeitet: