exe/dll packen

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2394
Registriert: 04.08.2004, 20:06
Kontaktdaten:

exe/dll packen

Beitrag von Jonathan »

Ich suche nach einer Möglichkeit, benötigte dll's in eine exe Datei zu packen. Hauptgrund ist in etwa folgender:
Jeder der schonmal mit OpenSceneGraph gearbeitet hat, weiß, dass dazu ungefähr 50 dlls gehören. Will man sein Programm weitergeben, muss man die alle mitkopieren. Natürlich benutzt man nicht immer alle, könnte also welche weglassen (wobei das Handarbeit ist) und, was noch viel wichtiger ist, man benutzt ja längst nicht alle Funktionen dieser dlls.
Also dachte ich mir, es müsste doch theoretisch möglich sein, nur die tatsächlich benutzen Teile einer dll zu extrahieren. Wo man gerade schon dabei ist, könnte man diese Teile dann auch gleich mit in die exe packen, so dass man danach statt "exe+50*dll" nur noch eine exe Datei hat, in der wirklich nur der Code steht, der auch irgendwann einmal ausgeführt wird.
So ganz trivial ist das Problem vermutlich nicht (Funktionen in dlls können ja weitere Funktionen aufrufen und so), aber vielleicht gibt es dafür ja doch irgendwelche Tools?
Eine kurze Suche hat mich zum Beispiel auf UPX gebracht, aber das ist ja nicht wirklich das, was ich suche. Das Packen von exe-Dateien hat ja auch eine Reihe von Nachteilen, ich hätte eigentlich gerne ein normales Programm (ohne unpack-Teil), wo aber eben Teile von dlls mit drin stehen. Also so gesehen eine Art nachträgliches, statisches Linken.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
simbad
Establishment
Beiträge: 132
Registriert: 14.12.2011, 14:30

Re: exe/dll packen

Beitrag von simbad »

Wenn man Programme statisch linked wird genau das von dir beschriebene gemacht.
Dazu sind aber im allgemeine entsprechende statische Libraries nötig, die anders aufgebaut sind.

Hinzukommt, das in einigen offenen Lizenzen die Auslieferung nur in Form von DLLs/shared libraries erlaubt ist. Z.B. SDL.

Ist also ein vielschichtiges Problem.
j.klugmann
Establishment
Beiträge: 201
Registriert: 07.07.2010, 13:00
Kontaktdaten:

Re: exe/dll packen

Beitrag von j.klugmann »

Das geht soweit nicht. Der PE-Loader von Windows unterstützt kein Laden von DLLs oder Executables aus Ressourcen sprich direkt aus dem Speicher. Wenn du Aufwand reinstecken willst, kannst du dir einen primitven PE-Loader schreiben, ist nicht allzu komplex, aber relativ frickelig.

Statisches Linken sollte noch am besten funktionieren, wenn die Lizenzen das soweit erlauben.
Imaging-Software und bald auch Middleware: http://fd-imaging.com
Antworten