RAD Studio 2009 (Linker Fehler)



  • Hallo,

    nachdem man mir gestern eine Lizenz gegen den Kopf geworfen hat, mit dem Kommentar "hier teste mal", konnte ich natürlich nicht halten.

    Zub -> Installiert. Wobei "Zub" hier ca. 1 Stunde(!) dauerte.

    Ich habe bereits ein lauffähiges RAD Studio 2007 auf dem selben Rechner laufen.

    Nun habe ich mein altes Project geöffnet. Es wurde "ge-upgraded". Feierlich ging ich natürlich davon aus das er mich vorher fragt... "Habe festgestellt das Projekt wurde mit einer älteren Version... möchtest Du Upgraden?"

    Man sollte dazu sagen diese devote Haltung scheint das RAD Studio verloren zu haben, denn -> Er machte es einfach. Natürlich mit einem Backup der *.cbproj Datei. Nun ja ärgerlich aber ist ja nichts passiert und ich habe ja noch das Backup!

    Beim compilieren nun ein kleiner Schock:

    [ILINK32 Fehler] Error: Nicht aufl÷sbares externes '__fastcall Forms::TApplication::SetMainFormOnTaskBar(const bool)' referenziert von I:\CODING\medView\DEBUG\MEDVIEW.OBJ

    Die Fehlermeldungen häufen sich...

    Traurieger Weise nun auch im älteren RAD Studio 2007!

    Hat jemand eine Ahnung und weiß woran es liegen könnte? Ich kann hier nur vermuten das es daran liegt, dass durch die zusätzliche Installation von RAD Studio 2009 mein Registry etwas verwurschtelt ist und der Linker daher Probleme hat die Libs für die externals zu finden. Aber das ist eher einer Vermutung als ein begründeter Verdacht.

    Bevor ich jetzt die installieren -> deinstallieren Tour durch mache, dachte
    ich mir frage ich mal rum vielleicht hat ja jemand ähnliche Probleme bereits vorher gemacht.

    Ich muss ganz ehrlich sagen, ich habe ein wenig Angst um mein Projekt! 😞



  • Slashi schrieb:

    Nun habe ich mein altes Project geöffnet. Es wurde "ge-upgraded". Feierlich ging ich natürlich davon aus das er mich vorher fragt... "Habe festgestellt das Projekt wurde mit einer älteren Version... möchtest Du Upgraden?"

    Man sollte dazu sagen diese devote Haltung scheint das RAD Studio verloren zu haben, denn -> Er machte es einfach. Natürlich mit einem Backup der *.cbproj Datei. Nun ja ärgerlich aber ist ja nichts passiert und ich habe ja noch das Backup!

    Auch wenn ich in Erinnerung habe das 2009 nachfragt (Ich hatte kürzlich die Testversion auf meinen Rechner), nehme ich mal an das jeder der mit Softwareentwicklung zu tun hat auch Sicherheitskopien (oder eine Versionsverwaltung) besitzt, und gerade bei einer Umstellung der Lizenz besonders aufpasst.

    Slashi schrieb:

    Die Fehlermeldungen häufen sich...

    Traurieger Weise nun auch im älteren RAD Studio 2007!

    1. Fehlermeldungen sind sogar verständlich, da allein schon die Komponenten auf Unicode abgeändert wurden. Dazu gibt es auf der Codegearseite aber auch informationen.
    2. Probleme mit den 2007ener sollten eigentlich nicht auftreten, aber hast du vermutlich den gleichen Sonderfall wie ich ihn hatte: Ich kann es nicht genau an dem 2009er festmachen, da noch andere Installationen liefen, nur musste ich die Installation des 2007 anschließend reparieren.

    Slashi schrieb:

    Ich muss ganz ehrlich sagen, ich habe ein wenig Angst um mein Projekt! 😞

    Das wiederum hatte ich nie (a - Vorherige lokale Sicherheitskopie, b - Stand in der Versionsverwaltung...).

    cu André



  • Natürlich besitze ich ebenfalls Zeitlich sortierte Sicherheitskopien.
    Ein paar Bugfixes von gestern Abend fehlen zwar aber das würde ich überleben.

    Nun auch diese produzieren selbige Fehler des Linkers.

    Das Backup welches nur aus den Quelldateien und der Projektdatei besteht kann seltesamer Weise auch gelinkt werden. Wie ich gerade festgestellt habe.

    Nachtrag:

    Es scheint tatsächlich darin zu liegen das er ältere Elemente nicht findet (aber wohl noch 'kennt') und diese nicht zusammen linken kann.

    Das Linken von Backups, die bei mir immer nur aus den Quelldateien bestehen, funktionierte erst besser, dann nachdem ich ein paar Objekte erstmal auskommentiert hatte - die ich bereits damals für "fragwürdig" empfand - linkte er ohne zu murren.

    Seltsam finde ich es trotzdem alle mal!



  • Ich erinnere mih daran, dass diese Fehlermeldung häufig auch dann auftritt, wenn bestimmte Objekte/ dateien auf die man verweist nicht vorhanden sind. z.B. passiert dies auch, wenn man ein Objekt auf seine Form zieht und sie nachher nur aus der dem Header löscht. Genau weiß ich nicht mehr wie das noch war, aber du kannst ja mal nachschauen, dass die Objekte die du benötigst auch alle vorhanden sind. und er nicht versuccht dinge aufzurufen die nicht vvorhanden sind.



  • Nun hab ich auch so einen Fehler. Wird aber wohl daran liegen, dass ich eine *.lib nicht zum Projekt hinzugefügt habe.



  • C++Builder 2009 fragt zwar beim Upgraden eines Projektes nicht mehr, aber zumindest eine Dialogbox informiert über den Schritt und über das Backup. Möglicherweise hast du dort einmal das Häkchen "Dieses Dialogfeld nicht mehr anzeigen" gesetzt.

    Slashi schrieb:

    Bevor ich jetzt die installieren -> deinstallieren Tour durch mache

    Bei Linkerschwierigkeiten wird das eher nicht helfen.

    Folgende Schritte sind bei Link-Problemen hilfreich:

    • Vor einem Rebuild mit einer neuen Version ältere Binaries (*.obj, *.tds, *.exe, *.lib, *.bpl, *.#??, *.pch) entfernen.
    • Möglicherweise hat der automatische Projektimport einen Fehler verursacht. Es hilft gewöhnlich, das Projekt neu zu erstellen und einfach alle Module des alten Projektes hinzuzufügen.
    • Falls irgendwelche Funktionen, die Handle-Parameter (z.B. HBITMAP, HDC) übernehmen, nicht aufgelöst werden können, hilft es gewöhnlich, in den Projektoptionen die Präprozessorkonstante NO_STRICT zu entfernen (und ggf. STRICT hinzuzufügen).
    • Sämtliche für Delphi-Units vom Compiler generierte Headerdateien löschen und neu erstellen lassen.
    • Falls eine WinAPI-Funktion nicht gefunden wird: im MSDN nachsehen, welche Importdatei hinzugelinkt werden muß, und die fragliche Datei zum Projekt hinzufügen.
    • Im Zweifelsfalle mit TDUMP die dekorierten Symbolreferenzen aus der Objektdatei und der Bibliotheksdatei, die das fehlende Symbol eigentlich bereitstellen sollte, vergleichen und analysieren. (Das Mangling-Format kann in $(BDS)\source\cpprtl\Source\misc\unmangle.c nachgelesen und auch damit decodiert werden.)

    Edit: Vergessenen Satz vervollständigt.


Log in to reply