Hallo,
ich habe ein Programm mit etwa 20 Runtime-Packages und einer Reihe von Packages von Embarcadero (resdistributables) und von Drittanbietern. Die .bpl- und teils .dll-Dateien habe ich in Unterverzeichnissen zur .exe-Datei abgelegt. Die .exe-Datei beinhaltet einen Bootstrapping-Mechanismus, der die Libraries der Reihenfolge nach lädt und dann aus dem Main-
Package das eigentliche Hauptprogramm (
VCL-Applikation) startet. Gründe: 1) Ich mag die Bibliotheken gerne fein säuberlich getrennt in individuellen Unterverzeichnissen (meine, Embardcadero, Drittanbieter). 2) Ich will steuern, welche Packages in welcher Reihenfolge geladen werden, um zu verhindern, dass versehentlich irgendwo anders liegende alte Versionen automatisch geladen werden, und um zu sehen, ob die Abhängigkeitsstrukturen innerhalb der
Package-Familie stimmen.
Das lief wunderbar bis Delphi 10.3.3 CE. Nun versuche ich auf Delphi 10.4 CE umzusteigen. Zunächst waren kleinere Änderungen im Code erforderlich, weil sich Signaturen geändert haben oder der Compiler pingeliger ist. Danach ließ sich das Gesamtwerk compilieren.
Allerdings crasht nun schon der Bootstrapping-Ablauf irgendwo, ohne dass der Debugger mir einen sinnvollen Call-Stack liefert. Ich habe in den letzten drei Wochen schon unzählige Stunden damit verbracht, der Ursache auf die Schliche zu kommen. Je nachdem, wie ich den Ablauf strukturiere, crasht es mal, nachdem die
Indy-Library geladen ist oder bei der initialization des Main-
Package oder oder oder. Mal ist es eine
Access Violation, mal eine Priviledged Instruction.
Nur wenn ich alle .bpl- und .dll-Dateien zusammen mit der .exe in ein Verzeichnis werfe, alle Packages als Runtime-Packages in den .exe-Optionen angebe und die Main-
Unit einbinde, um Delphi das automatische (verzögerte) Laden zu überlassen, läuft das Programm durch. Wenn ich stattdessen auch nur folgendes minimale Programm laufen lasse, crasht es bei der initialization der Main-
Unit:
Code:
begin
SetDllDirectory(PWideChar('C:\PfadZuDenLibs\'));
LoadPackage('bnMain270.bpl');
end.
Endlose Google-Suchen waren ergebnislos. Ich bräuchte bitte mal einen heißen Tipp, wie ich dem Problem auf die Schliche kommen kann.
Viele Grüße
Boris