AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Laufzeit bpl Abhängigkeiten

Ein Thema von hanspeter · begonnen am 3. Mär 2010 · letzter Beitrag vom 4. Mär 2010
Antwort Antwort
Seite 1 von 2  1 2      
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Laufzeit bpl Abhängigkeiten

  Alt 3. Mär 2010, 23:54
Hallo,
Ich hatte mich gewundert, das meine unter D2010 kompilierten Programme fast 3 mal größer wurden.
Zwischenzeitlich habe ich festgestellt, das dafür einige externe Module verantwortlich sind.
Ich verwende z.B. die TMS - Module.
Dort gibt es eine 10 Mbyte große BPL tmsd2010. Verwende ich diese als Runtime bpl , dann wird mein Programm um fast 9 Mbyte kleiner.
Da scheint wohl der Linker nicht mehr sehr smart zu sein und linkt alles was er vor die Nase bekommt.
Also dachte ich, es ist eine gute Idee VCL,RTL und dieses Modul als Laufzeitpackage verwenden.
Das hat nicht ganz gereicht. Aufgrund interner Verbändelungen mußte noch TeeChart (obwohl nicht verwendet aber fehlen erzeugt Klassenfehler in rtl)
und IBDAC dazu.
Also eine hübsche kleine Liste : Laufzeitpackages verwenden: vcl;ibdac140;rtl;tmsd2010;Tee Jetzt habe ich das ganze mal auf einen Delphi-freien Rechner kopiert und ein böses Erwachen erlebt.
Zuerst beendet sich das Programm mit einer Fehlermeldung über fehlende Packages. Aufgrund irgendwelcher interner Abhängigkeiten mußten noch 14 weitere bpl
auf die Zielmaschine kopiert werden, obwohl sie nirgendwo als Laufzeit deklariert sind.
Darunter auch solche Exoten wie bdertl140.bpl oder vclactnband140.bpl. Weder die BDE noch Actionsbänder werden in dem Projekt verwendet.
Nach dem Hiunzufügen der geforderten BPL startet das Programm (im Taskmanager erkennbar) aber hängt sich auf.
Da es auf einen Delphi-verseuchten Rechner funktioniert, gehe ich davon aus, das noch weitere Laufzeitbpl notwendig sind.
Suche ich auf meinem Rechner nach *.bpl erhalte ich weit über 500 Referenzen.
Kennt wer ein Tool welches mir solche Abhängigkeiten auflistet oder muß ich nun ca. 500 bpl durchprobieren, bis das Programm startet?
Oder hat wer eine Liste der immer benötigten bpl?

Gruß
Peter
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 10:00
Hat sich erledigt.
Da ich nichts passendes finden konnte, habe ich mir schnell
selbst das benötigte Tool geschrieben.
Es ist beeindruckend, was ein Delphiprogramm beim Start an dll läd.
Warum aber manche mehrfach geladen werden? (z.B. ole32.ddl vier mal.)
Ich habe mal das Listing angehängt. Nur vcl und rtl sind runtime.
BPL mit * enthalten Debuginfo.

Peter
Miniaturansicht angehängter Grafiken
load_849.png  
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#3

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 10:11
Also ich würde sowas nicht machen. Warum? Mehrer Gründe:
1) Es ist nur Augenwischerei. Deine exe ist zwar klein, aber Du lieferst einen Sack voll bpl mit...
2) bpl sind fast noch schlimmer als dll, bpl hell ist da ein gutes Stichwort.
3) Schau doch mal Deine Compilereinstellungen durch, eventuell ist da noch was zu optimieren.


Edit: ach, 3 ist ja gar kein Grund...nunja...egal. du verstehst schon was ich meine.
Sherloc
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 10:20
Zitat von hanspeter:
Hat sich erledigt.
Da ich nichts passendes finden konnte, habe ich mir schnell
selbst das benötigte Tool geschrieben.
Dependency-Walker wäre das Tool der Wahl.

Zitat von hanspeter:
Es ist beeindruckend, was ein Delphiprogramm beim Start an dll läd.
Warum aber manche mehrfach geladen werden? (z.B. ole32.ddl vier mal.)
Probier mal Dependency Walker. Der zeigt dir auf welche DLL welche andere DLL nachläd. Teiweise sind installierte Systemerweiterungen (NView, Office Groove, Virenscanner ...) die Schuldigen für viele geladenen DLL's. Ich tippe mal auch darauf das du WLAN aktiv hast und ACDSee installiert hast.

Delphi-Programme sind eigentlich immer sehr sparsam was DLL's betrifft.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 10:36
Bei Delphi wird ein Kommandozeilentool mitgeliefert, welches sich tdump.exe nennt. Damit kann man sich auch alle erforderlichen Libraries auflisten lassen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 11:09
Zitat von Sherlock:
Also ich würde sowas nicht machen. Warum? Mehrer Gründe:
1) Es ist nur Augenwischerei. Deine exe ist zwar klein, aber Du lieferst einen Sack voll bpl mit...
2) bpl sind fast noch schlimmer als dll, bpl hell ist da ein gutes Stichwort.
Sherloc
Hatte ich ja schon oben geschrieben. Jede Exe die TMS verwendet wird um 6 bis 9 Mbyte kleiner.
Mein Projekt besteht aus 7 Exe-Files und 70Mbyte über Internet oder nicht, ist schon viel Holz.

Mir sind die Punkte 1 .. 3 durchaus bekannt und bewußt.
Ich selbst halte das BPL Konzept für Schwachsinn und versuche die bpl Hölle zu vermeiden, wo es geht.
Leider komme ich in dem vorliegenden Projekt nicht darum herum, da ich einige Teile in dll ausgelagert habe.
(z.B. der Reportgenerator des Projektes mit Fastreport, der in allen Exe gebraucht wird.)
Hier fliege ich zur Laufzeit sonst über die mehrfache Registrierung mit RegisterClass.
Ein Teil hatte ich als OutofProcess-Server realisiert. Wo sich aber wer an der notwendigen Registrierung störte.
(Die erfolgt zwar automatisch, braucht aber Administratorrechte.)
Inzwischen meine ich aber, das eine Com-Lösung doch der bessere Weg ist.

Peter
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 11:11
Zitat von Bernhard Geyer:
Probier mal Dependency Walker. Der zeigt dir auf welche DLL welche andere DLL nachläd. Teiweise sind installierte Systemerweiterungen (NView, Office Groove, Virenscanner ...) die Schuldigen für viele geladenen DLL's. Ich tippe mal auch darauf das du WLAN aktiv hast und ACDSee installiert hast.
Nein WLAN ist nicht aktiv und ACDSee ist ebenfalls nicht installiert.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 12:21
Mich hat es bisher auch immer gewundert, das die bpl komplett gelinkt werden, auch wenn ich nur einen kleinen Teil verwende. Das macht nicht nur bei TMS, sondern auch bei den Alphaskins recht große exen.

Kann man das nicht irgendwie optimieren? Im Prinzip müsste man für jede Komponente ein eigenes Package machen, um nur das zu linken, was man benutzt.

Grüße, Messie
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 13:35
Zitat von hanspeter:
Nein WLAN ist nicht aktiv und ACDSee ist ebenfalls nicht installiert.
Die Dateinamen haben es nahegelegt.

Aber probier trotzdem mal Dependency Walker. Damit bekommst du auch schön die Liste der delayed Loaded DLL's.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#10

Re: Laufzeit bpl Abhängigkeiten

  Alt 4. Mär 2010, 15:02
Hallo,

Das Eingangsposting in diesem Thread erschüttert mich total. Intelligentes Linken (Nur, was wirklich im Code verwendet wird, wird auch eingebunden, der übrige Code bleibt draußen, war zu Zeiten von Turbo Pascal 7.0 schon mal da. Warum jetzt nicht mehr?

Die Technologie dafür haben die doch schon seit Turbo Pascal 7.0. Braucht doch somit bloß wieder verwendet zu werden.

Zitat von Bernhard Geyer:
Probier mal Dependency Walker. Der zeigt dir auf welche DLL welche andere DLL nachläd. Teiweise sind installierte Systemerweiterungen (NView, Office Groove, Virenscanner ...) die Schuldigen für viele geladenen DLL's. Ich tippe mal auch darauf das du WLAN aktiv hast und ACDSee installiert hast.
Welche Dll's von anderen Dll's noch nachgeladen werden, kann natürlich der Compiler wiederum nicht wissen.

Zitat:
Ich selbst halte das BPL Konzept für Schwachsinn und versuche die bpl Hölle zu vermeiden, wo es geht.
Hmmm, ja, bei Lazarus muss bei Installation neuer Komponenten die IDE neu übersetzt werden, was auch nicht so die optimale Lösung ist. Wenn dann noch im Compilerlauf irgendwas nicht gefunden wird, geht die Komponente nicht zu installieren, weil die IDE danach nicht neu übersetzt werden kann. Baue grd ne eigene IDE. Vielleicht sollte ich da einen Designer konzipieren. Vielleicht geht da mit Interfaces was besseres um Fremdkomponeten zu installieren. Mal schauen. Erst mal die IDE in den Basisfunktionen.

Fazit aus diesem Thread wäre:

Für jede Komponente ein eigenes Package!.
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz