000
08.12.2006, 21:33 Uhr
~User0815
Gast
|
Hallo,
Ich habe nen grosses Problem und weiss noch nicht wie ich das lösen kann. Aber ihr könnt mir bestimmt helfen.
Es geht um folgendes: Ich habe ein Fremdprojekt, das in MSVC++6 geschrieben ist. Nun muss ich es in Borland BDS2006 umschreiben. Eine ziemlich undankbare Aufgabe. Nun hänge ich schon länger an einer Stelle fest: Ich bekomme ein paar Linker-Fehler, die besagen, dass der Linker gewisse Funktionen (größtenteils Destruktoren) nicht auflösen kann. Und ich bin mir nicht sicher warum. Bin mir nicht sicher, ob ich da was mit den abstrakten Klassen noch nicht ganz richtig verstanden habe oder ob es an libs liegen könnte... der Aufbau ist schematisch etwa so (abgekürzt und zusammengefasst):
C++: |
class c1 { c1() {} virtual ~c1() {}
virtual bool func1(bool var1) = 0; static bool funcX(bool varX); // usw. }
class c2 : public c1 { c2(); virtual ~c2();
// weitere Funktionen }
class c3 : public c2 { c3(); ~c3();
// weitere Funktionen }
|
So, und nun wird ein Zeiger auf eine Klasse "c3" angelegt und schon kommen die Linker Fehler. Was muss vorhanden sein, damit es eigentlich keinen Fehler geben kann? Doch eigentlich nur eine Implementation der Funktionen. Nur leider kann ich diese in Visual auch nicht finden. - Wie kann ich herausfinden, wo eine Funktion implemetiert ist, wenn sie denn implementiert ist?
Und da wäre noch was: Bei dem Visual Projekt sind ganz viele *.lib - Dateien dabei. Kann eine *.lib Datei auch Implementationen enthalten? Weil bisher habe ich sie nur in Zusammenhang mit DLL's benutzt. Und das coff2omf Tool von Borland konvert diese auch nicht (kommt 512 Byte raus... google...). Und in ner DLL kanns auch net stehen...
Also mein Problem nochmal zusammengefasst: Versuche nen VC++ Projekt nach Borland umzuschreiben. Bekomme beim Anlegen eines Zeigers auf eine Klasse den beschriebenen Linker-Fehler. Kann jedoch nicht sagen, warum der Linker die Referenz in Borland nicht findet, in Visual aber scheinbar schon irgendwie (ich finds in VC++ aber nicht). Die Suchpfade im Compiler sollten auch identisch sein (hab ich zumindest versucht einzustellen).
Blöde gefragt: Was mach ich jetzt??? Es kann doch nicht so schwierig sein.
Danke schonmal! |