Unresolved External - das leidige Thema
-
Original erstellt von WebFritzi:
Ne, ist alles richtig eingestellt. Aber mich interessiert ja mal, was in diesem Falle das "Unresolved External" bedeutet, also "Unerfüllter externer Baustein" oder so...Ich interpretiere das folgendermassen:
in der OBJ-Datei steht ein Aufruf einer Funktion/Methode. Allerdings kann der Linker dazu nicht die entsprechende Implementation aufrufen (-> unresolved = nicht aufgelöst, external = irgendeine externe Funktion/Methode etc).Ich hatte so ein Problem als ich DLLs einbinden wollte.
In dieser DLL hatte ich ein ADOQuery-Objekt.
Habe dort dann auch die Header-Datei eingebunden, aber beim linken kann eben auch immer dieser Fehler.
Dann habe ich als nächstes die *.hpp-Datei (ich glaube sie hiess ADOdb.hpp) dem Projekt per Hand hinzugefügt.
Also, hab ich dann das Projekt neu erstellen wollen, aber es hagelte mir jetzt massig Fehlermeldungen wegen der *.hpp Datei.
Daraufhin hab ich die *.hpp Datei wieder entfernt und einfach nochmals auf Aktualisieren geklickt.
Und dann hat's komischerweise funktioniert - keine Compiler-/Linker-Fehler mehr.Ich kann mit das bis heute noch nicht erklären, aber auf jeden Fall hat's dann funktioniert.
Vielleicht ist das auch ein Bug vom BCB...
Kannst's ja mal versuchen, die entsprechenden *.hpp's einzubinden, einmal compilieren und danach wieder rausnehmen
-
Die jpeg.hpp und die gifimage.hpp muss ich standardmäßig einbinden (also per include). Sonst erkennt er die Typen TJPEGImage und TGIFImage nicht.
-
Ja, aber per Projekt->Dem Projekt hinzufügen die *.hpp's hinzufügen.
Und danach dann wieder per Projekt->Aus Dem Projekt entfernen die *.hpp's wieder entfernen.Die #include-Anweisungen müssen aber auf jeden Fall erhalten bleiben
-
Hat erwartungsgemäß auch nichts gebracht.
-
So, jetzt reichts mir!!! Ich installiere den Builder neu. Und wenn das dann nicht klappt, dann.... dann steige ich auf den VC um. überleg Ne, so tief gesunken bin ich doch noch nicht.
-
Trink Dich einen! :p
-
Ich habe diesen Beitrag nur mal so überflogen, schlag mich nicht, wenn ich jetzt was sage, was schon erwähnt wurde:
Hast du irgend welche Funktionen in der *.cpp Datei gelöscht, wo in der *.h noch die Deklaration steht ?
[ Dieser Beitrag wurde am 16.12.2002 um 16:15 Uhr von YLIREBUS editiert. ]
-
Hallo
Du hat die includes in einen Namespace gepackt. In der Library sind die Klassen jedoch nicht in einem Namespace. Deshalb findet er sie nicht mehr.
Gruss Chris
-
Original erstellt von Chrisi_K:
Du hat die includes in einen Namespace gepackt. In der Library sind die Klassen jedoch nicht in einem Namespace. Deshalb findet er sie nicht mehr.Woher weißt du das denn?
-
Oh, oh: das könnt's sein. Hoffentlich hat sich WebFritzi noch nicht unter den Tisch getrunken...
@Eßer: Er weiß es halt...(pssssst)
[ Dieser Beitrag wurde am 16.12.2002 um 16:35 Uhr von @xel editiert. ]
[ Dieser Beitrag wurde am 16.12.2002 um 16:42 Uhr von @xel editiert. ]
-
@Esser
[LinkerFehler] Unresolved external 'Jpeg::TJPEGImage::~TJPEGImage() __fastcall' referenced from E:\C++\PROJEKTE\REGIONBUILDER\MAINWINDOW.OBJ.
Daher weiss ich das.
-
Nö, kann nicht sein. Die Linkerfehler kommen auch mit Dyn. RTL und Laufzeitpackages.
Habs ausprobiert.
@WebFritzi: Hör nicht auf Axel.
-
Oh, du hast recht. Trotzdem: Die Linkerfehler kommen auch mit Dyn. RTL und Laufzeitpackages.
Edit: Wenn du kein 'ß' hast, dann bitte "Ehser". Danke.
[ Dieser Beitrag wurde am 16.12.2002 um 16:47 Uhr von Eßer editiert. ]
-
Geht jetzt, aber fragt mich nicht, warum. Ich hatte da noch ein anderes Problem: ich hatte die ganzen jpeg- und gif-Sachen mal weggelassen und habe ganz normal mit Laufzeitpackages kompiliert - wunderbar. OK. Dann habe ich das wieder deaktiviert, und was bekomme ich da? Eine AccessViolation. Direkt nach dem Linken. Wo? Keine Ahnung. Hat er nichts zu gesagt. Nach 50000mal rumprobieren hab ich dann irgendwas im Quelltext geändert, und es lief. Keine Ahnung warum. Irgendwie spinnt der BCB manchmal so richtig ab. Das muss ich hier mal so sagen.
Nichts für ungut, Leute. Danke der Anteilnahme und euren Ratekünsten.
-
Na dann,
auf geheiß gehts nun hier weiter.
Also ich habe x-mal probiert, aber immer der sch... Linkerfehler.
[Linker Fehler] Unresolved external
'__fastcall Jpeg::TJPEGImage::~TJPEGImage()'
referenced from D:\ALIFABU\PROGRAMM\TEMP\TSTAMMFORM.OBJ... 'Jpeg::TJPEGImage::' ...
... '__fastcall Jpeg::TJPEGImage::TJPEGImage()' ...
Das sind immer der Konstruktor und der Dekontruktor.
(1) Kann es sein, daß das Pascal<->C++ probleme sind ?
(2) Frage in der Not: Gibt es eine ähnliche Freeware-Komponente ?
in hope
Mario
-
Hi,
ich gleich nochmal.
Hab mir gerade mal die jpeg.hpp angeschaut.
... _fastcall virtual TJPEGImage(void); __fastcall virtual ~TJPEGImage(void); ...
Ich könnte mir vorstellen, daß es in der jpeg.obj gar keinen
Konstruktor und Dekonstruktor gibt, den man reinlinken kann.
Denn im Pascal geht das ja immer mit TJPEGImage.Create und
TJPEGImage.Destroy . *mmmmm*Hat denn irgend jemand noch die "jpeg.pas" ?
Gruß
Mario
-
Hallo und Dankeschön an alle.....
.JUHU PROBLEM GELÖST ...
Menü "Projekt/Optionsquelle bearbeiten", in den Parametern<PACKAGES value="... VCL50.bpi ..."/>
hatte ich ja schon die "vcljpg50.bpi" eingetragen.doch dann kam ich auf die Idee in die Parameter
<LIBRARIES value="... VCLIB50.lib ..."/>
und
<SPARELIBS value="... VCL50.lib ... "/>
die Datei "vcljpg50.lib" einzutragen,... und mmmmmmmmmmm
Manchmal brauchen die kleinen grauen Zellen doch etwas länger.
Man wird ja auch nicht jüngerPS: Eigendlich müsste doch der Builder diese Parameter automatisch nachtragen,
oderDankeschön nochmal, und ein schönes Wochenende
Mario
-
Ne, ist alles richtig eingestellt. Aber mich interessiert ja mal, was in diesem Falle das "Unresolved External" bedeutet, also "Unerfüllter externer Baustein" oder so...
Diese Fehelermeldung kommt dann, wenn etwas deklariert ist und nicht implementiert ist.
Wenn du eine Header einbindest und der Linker kann die Datei nicht finden in der die Implementierung steht oder die Implementierung steht nicht in der gefundenen Datei, dann kommt du auch Fehlermeldung.