Discussion:
Einzelnes Package statisch linken
(zu alt für eine Antwort)
Sven Lanoster
2015-11-05 18:53:43 UTC
Permalink
Moin, moin.

Ich habe ein Programm, welches die Delphi-LiveBindings benutzt. Tolle
Sache, funktioniert prima.

Leider darf ich das Package BindEngine210.bpl nicht ausliefern. Nicht
fragen, ist halt so.

Also habe ich in den Projektoptionen das dynamische Linken gegen die
Packages deaktiviert. Die Exe hat dann plötzlich 50 MB, läuft aber
Prima, ohne dass das Package BindEngine210.bpl auf dem Zielrechner ist.

Leider benutzt das Programm Fremdkomponenten, die nicht als Quellcode
(oder DCU) vorliegen und deswegen dynamisch gegen die Runtime-Packages
der Fremdhersteller gelinkt werden müssen.

Also habe ich in den Projektoptionen das dynamische Linken wieder
aktiviert. Außerdem alle Packages, die irgendetwas mit LiveBindings zu
tun haben, aus der Liste entfernt, die an den DCC übergeben wird.

Ich hatte gehofft, dass dann nur gegen die Packages gelinkt wird, die
dort aufgezählt sind. Ärgerlicherweise will das erzeugte Programm
trotzdem die BindEngine210.bpl haben. Keine Ahnung, wo das herkommt.

Gibt es irgendeine Möglichkeit, nur gegen die Fremdkomponenten dynamisch
zu linken und das LiveBinding statisch einzukompilieren? Ich bin der
Meinung, dass das grundsätzlich möglich sein sollte.

Vielleicht irgendwas schlaues ins Uses schreiben? Ich habe bereits alles
ins Uses aufgenommen, was ich auf meiner Platte mit "*bind*.dcu" finden
konnte. Das löst das Problem jedoch nicht (kompiliert sauber durch und
will dann zur Laufzeit doch wieder das Package haben).

Ach ja, es geht um Delphi XE7.

Hat jemand eine Idee, was ich noch probieren kann?

Grüße,
Sven.
--
Seltsam? Aber so steht es geschrieben...
Hans-Peter Diettrich
2015-11-06 00:52:28 UTC
Permalink
Post by Sven Lanoster
Gibt es irgendeine Möglichkeit, nur gegen die Fremdkomponenten dynamisch
zu linken und das LiveBinding statisch einzukompilieren? Ich bin der
Meinung, dass das grundsätzlich möglich sein sollte.
Vielleicht reicht es, LiveBindings (root unit) im ProjektManager
hinzuzufügen.

Allerdings kenne ich weder XE7 und LiveBinding näher.

Alternativ LiveBindings auf dem Entwicklungsrechner (Kopie, VM...)
entfernenen, dann statisch linken und die dabei gemeldeten Fehler
beheben. Ob die IDE da mitspielt, wäre auszuprobieren (aus der Palette
entfernen). Vielleicht reicht auch ein cross-build für eine Plattform,
auf der LiveBindings nicht verfügbar ist.

DoDi
Soeren Muehlbauer
2015-11-06 07:48:25 UTC
Permalink
Hi,
Post by Sven Lanoster
Leider benutzt das Programm Fremdkomponenten, die nicht als Quellcode
(oder DCU) vorliegen und deswegen dynamisch gegen die Runtime-Packages
der Fremdhersteller gelinkt werden müssen.
Vielleicht haben die BPL des Fremdherstellers die LiveBindings Packages
als Abhängigkeit? Das würde das erklären. Wenn dem so ist, hast Du keine
Chance. Auch hier trifft man wieder auf den alten Lehrsatz: Kaufe keine
Komponenten ohne Quelltexte.

VG. Sören
Sven Lanoster
2015-11-06 23:15:18 UTC
Permalink
Post by Sven Lanoster
Also habe ich in den Projektoptionen das dynamische Linken wieder
aktiviert. Außerdem alle Packages, die irgendetwas mit LiveBindings zu
tun haben, aus der Liste entfernt, die an den DCC übergeben wird.
Allerdings hatte ich nur die Packages mit *bind* entfernt. Das reicht
nicht, weil andere RT-Packages die Livebindings im Require haben. Welche
genau das sind, weiß ich noch nicht.
Post by Sven Lanoster
Ich hatte gehofft, dass dann nur gegen die Packages gelinkt wird, die
dort aufgezählt sind. Ärgerlicherweise will das erzeugte Programm
trotzdem die BindEngine210.bpl haben. Keine Ahnung, wo das herkommt.
Wenn ich tatsächlich auschließlich gegen das absolut Notwendige linke
(nämlich das Fremdpackage), funktioniert es genau so wie erwartet.

Jetzt muss ich nur noch austesten, gegen welche Packages ich linken darf
und gegen welche nicht.

Vielen Dank an DoDi und Sören!
Ohne euch wäre ich nicht darauf gekommen, mit einem Texteditor in die
.dproj zu schauen und hätte dort nicht gesehen, dass ich ewig viele
Packages aus anderen Build-Einstellungen "erbe". Und mir dadurch die
indirekte Abhängigkeit auf das böse Package eingetreten habe.

Ich geb eine Runde "Wochenende!" aus.

Gruß,
Sven.
--
Seltsam? Aber so steht es geschrieben...
Loading...