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