Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie Satellite (Resource-Only)-DLL erstellen? (https://www.delphipraxis.net/162609-wie-satellite-resource-only-dll-erstellen.html)

CCRDude 31. Aug 2011 09:59

Wie Satellite (Resource-Only)-DLL erstellen?
 
Für diverse Zwecke braucht man ja mal reine Resourcen-DLLs. Dem VC-Linker könnte man per /noentry sagen, daß man gar keinen Entry-Point braucht.

Nur wie macht man das per Delphi (oder alternativ FreePascal)?

Das "Standardkonstrukt"
Delphi-Quellcode:
library MyResourceLibrary;
{$R MyResourceLibrary.res} 
end;
hat ja bereits zwei Resourcen (PACKAGEINFO und DVCLAL), die man natürlich nachträglich entfernen könnte, sowie abr auch eine Code Section, die überflüssig ist und das ganze aufbläht. Unter FreePascal kann ich per -WN zumindest den Relocation-Teil weglassen.

Bekomme ich das mit dcc32/fpc-Mitteln besser hin? Abseits davon, ein eigenes Tool schreiben zu müssen, das unnötige Resourcen und Sections entfernt?

himitsu 31. Aug 2011 10:33

AW: Wie Satellite (Resource-Only)-DLL erstellen?
 
Ich kenn da jedenfalls nichts,
aber du kannst die DLL auch normal erstellen und dann als Resource-DLL laden, dann wird ebenfalls kein Entry-Point ausgeführt.

MSDN-Library durchsuchenLoadLibraryEx + LOAD_LIBRARY_AS_DATAFILE



Man könnte jetzt auch noch die automatisch eingebundenen System-Units austauschen (eine abgespeckte System.pas und SysInit.pas im Projektverzeichnis), um die Code-Section kleiner zu bekommen.

CCRDude 31. Aug 2011 10:56

AW: Wie Satellite (Resource-Only)-DLL erstellen?
 
Danke :)

Das kenne ich aber und so mache ich das auch. Es geht mir nicht darum, daß der Entry Point nicht ausgeführt werden soll, sondern einfach darum, "saubere" Dateien zu haben, in denen nicht mehr als wirklich nötig steht.

Ich suche quasi das Äquivalent von
Code:
link.exe /dll /noentry /def:MyResourceLibrary.def MyResourceLibrary.res
Aus Interesse hauptsächlich :)

(Nachtrag: und, weil MUI so saubere DLLs benötigt, wie ich als Antwort auf meine eigene Frage herausgefunden habe: http://www.delphipraxis.net/162610-m...wendungen.html)

CCRDude 14. Okt 2011 09:04

AW: Wie Satellite (Resource-Only)-DLL erstellen?
 
Während ich das Tool zum Anpassen von Delphi-DLLs immer noch plane, habe ich nun eine noch kleinere Form als die von VisualStudio gefunden, nämlich FASM:
Code:
format PE GUI 4.0 DLL

include 'win32a.inc'

section '.rsrc' resource data readable

directory RT_RCDATA
Darein kann ich nun einerseits Resourcen direkt einfügen, oder in das Ergebnis von meinem Delphi-Code aus.

Diese FASM-Grunddatei ist genau 1 KB groß; die von VC war 2 KB, die von Delphi (die nicht für MUI taugt) ca. 20 KB.

Soweit nur als Fortschrittsbericht, würde mich natürlich immer noch freuen, wenn das auch mit Delphi möglich wäre.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz