Migration BCB 6 auf BCB 2006

Hier mal eine kleine Zusammenfassung, was ich bei der Migration von ca. 30 Projekten für Probleme hatte. Nur ein geringer Teil der Projekt lies sich ohne Probleme umstellen. Dabei macht der Compiler keinen Ärger. Nur der Linker machte ordentlich zicken (s.u.). Der Compiler machte nur bei geänderten Indyklassen eine berechtigte Anmerkung. Im Vergleich zu der beim BCB 6 mitgelieferten Indyklassen (ich hatte nie ein Update gemacht) sind einige Änderungen in der Indy 9er Version erfolgt. Mit der Hilfe konnten diese schnell erledigt werden. Problemlos konnten alle eigenen Komponeten in das neue System integriert werden. Beim umstellen machten DLLs am meisten ärger. Fast keine konnte ohne Probleme migriert werden. Hier erscheint doch der Linker und/oder die Konvertierungsroutinen verbesserungsbedürftig. Es wurden immer BCB 6 nach BCB 2006 migriert. Keine anderen. Ziel war es auch jedesmal eine Standalone (statisch gelinkte) Anwendung zu erhalten. Diese Ziele standen nicht immer in Übereinstimmung mit dem Linker:

[Linker Fataler Fehler] Fatal: Zugriffsverletzung. Link beendet.
Keine Ahnung was er da wollte -> Neues Projekt angelegt. Habe auch den Hinweise bekommen, dass dies passiert (auch passiert?), wenn die Option "keine Optimierung" aktiv ist und mehr als 20 CPP Dateien vorliegen

[Linker Warnung] Warning: Image wurde als ausführbare Datei gelinkt, aber mit einer .DLL- oder .BPL-Erweiterung
Keine Ahnung warum. Der Eintrag in der *.bdsproj lautete auf CppDynamicLibrary -> Neues Projekt angelegt

[Linker Fehler] Error: Ungelöste externe 'Sysutils::EDivByZero::' referenziert von E:\BUILDER2006\LIB\CP32MT.LIB|xx
Es folgten weitere 25 Fehler, die auf Standard VCL Klassen hinwiesen. Die vcl.h. war eingebunden. Seltsamerweise tratt dieser Fehler nur bei einigen DLLs auf nicht bei allen, obwohl alle die VCL nutzen. Hier half nur die rti.lib und vcl.lib dem Projekt hinzuzufügen

[Linker Fataler Fehler] Fatal: Datei 'STLPMT.LIB' kann nicht geöffnet werden
In der *.bdsproj war kein Verweis auf die Lib zu finden.Auch ein Grep über alle Dateien in dem Projektordner brachte nicht zutage, warum er unbeginnt diese Lib wollte. Die STL wurde NICHT benutzt. Manchmnal half, ein neues Projekt anzulegen, jedoch nicht immer. Diese Lib gibt es wohl im BCB 2006 nicht mehr. Habe dem Linker dann in 2 hartnäckigen Fällen dann die Lib aus dem BCB 6 vorgeworfen. Dann war Ruhe.

[Linker Fehler] Error: Datei 'TRAYICON.RES' kann nicht geöffnet werden
Im ganzen Projektordner ist kein Verweis auf diese RES nicht zu finden. Auch unklar, warum er diese wollte. Selbstverständlich nutzte das Projekt keine Daten aus der RES, keine Tray Komponente o.a.. Hier musste ich dem Linker den Verweis auf die RES mitgeben. Diese liegt unter ....\Demos\CPP\Controls

Wer weitere Hinweise hat, oder neue Fehler -> bitte eMail an unten stehende Adresse

Zur Übersicht