Generelle Frage wegen verwendung einer Pascal Unit mit BCB
-
HI,
ich benutz in meinem Projekt eine Unit von Pascal.
Funktionert alles soweit wie es soll, aber komischerweise kann man in der EXE die "Exports" der Pascal Unit sehen wenn man die EXE in einen Dissassembler lädt. Die Unit exportiert keine Funktionen, aber das wird wohl von dem generierten HPP File kommen, oder?
Ich hab damit kein Problem, mich würde aber interessieren was ich machen muss damit das nicht "exportiert" wird - sofern das überhaupt geht.
Danke schon mal
-
Maverick schrieb:
Ich hab damit kein Problem, mich würde aber interessieren was ich machen muss damit das nicht "exportiert" wird - sofern das überhaupt geht.
In den Delphi-Compiler-Optionen ist für die Option "Linker output" standardmäßig "Generate C++ .objs, headers, namespaces, export" eingestellt. Wenn du hier eine Variante ohne "export" wählst, werden die Symbole nicht exportiert.
Neben diesen Symbolen exportieren C++Builder-Kompilate gewöhnlich noch Symbole für die Initialization- und Finalization-Sektion der C++-Units, die Form-Variablen und das Symbol ___CPPDebugHook. Die Initialize-/Finalize-Symbole wird man los, indem man die Zeile
#pragma package(smart_init)
aus den Units entfernt (die Konsequenzen sind hier dokumentiert). Die von der IDE in der Standardkonfiguration erstellten globalen Formularvariablen sollte man mit Ausnahme des Hauptformulars bzw. -moduls ohnehin nicht benutzen; wenn man sie manuell aus den Units entfernt, verschwinden auch die Exportsymbole. Und ___CPPDebugHook kann man entfernen, indem man ein paar Kleinigkeiten in der RTL verändert und sie dann neu kompiliert - allerdings mit der unmittelbaren Folge, daß bei der Exceptionbehandlung im Debugger Schwierigkeiten auftreten dürften, weshalb ich davon abrate.
-
Ah, danke schön
Kann man irgendwo nachlesen was man für "Kleinigkeiten" ändern muss bei der RTL?
-
Kann man, wenn man richtig sucht, aber ich rate nach wie vor dringend davon ab, da ich nicht genau weiß, welche Konsequenzen das hat, wenn du das Kompilat im Debugger startest. So etwas sollte man nur tun, wenn man sich aller Folgen genau bewußt ist - und dann ist man auch in der Lage, das selbst herauszufinden.