dll statisch mit einbinden --> einzelne exe-datei erstellen
-
hi!
nicht gleich die krise kriegen, ich hab schon gesucht und auch schon ne menge gefunden
aber ein problem hab ich noch:
ich möchte in mein projekt eine von mir erstellte dll einbinden. funktioniert auch ganz wunderbar! diese dll soll jedoch nachher mit in die exe-datei eingebunden werden, soll heißen, dass ein user nachher nur die exe-datei bekommt und keine weiteren dlls oder sonstwas braucht!
bin auch schon diesen punkten gefolgt:
- [Compiler] auf "Endgültig" klicken.
- Unter [Packages] den Hacken bei "Mit Laufzeit Packages aktualisieren" weg
- [Linker] "Dynamische RTL verwenden" auch den Haken weg.leider benötigt er trotzdem die dll! hat einer eine idee, was ich falsch gemacht habe? ich glaube, er bindet sie nicht richtig ein
-
bist du dir sicher, dass das überhaupt geht? dll ist doch dynamic link library, also eine lib, die dynamisch (also doch zur laufzeit!?) eingebunden wird.
cu, raphael
-
Ich glaube auch, dass das nicht die beste Lösung ist. Also wenn du das unbedingt so lösen willst binde die DLL als Ressource ein und pack beim Start des Programmes raus und beim Beenden löschst du sie wieder, aber wie gesagt das is nich erste Sahne!
-
also mein problem ist, dass die dll wichtige algorithmen enthält, die keiner einsehen darf! ich hab die dll von einem kollegen bekommen (ohne lib datei), der sie in purebasic programmiert hat...ich könnte sie auch selber in mein programm einbauen, hab aber keine zeit dazu und weiß auch nicht so recht, wie ich das tun kann!
ich hab als erstes eine lib datei mit implib.exe erstellt und diese lib datei in mein programm eingebunden. vorher konnte ich die dll auch nicht einbinden, bzw nur dynamisch einbinden. also dynamisches linken hat natürlich geklappt! aber wie gesagt, er benötigt dazu später die dll.
meine statische bindung (zumindest glaube ich, dass sie statisch ist
) funktioniert folgenderweise:
- erstmal die lib-datei dem projekt zugefügt
- folgenden quellcode eingefügt:extern "C" __import long int __stdcall DDI_Unpack(char*, char*);
- "normaler" aufruf der funktion
@nirsaja: wie funktioniert denn deine idee? also das mit der ressource?
@all: hat sonst noch einer eine nette idee? so richtig weiter weiß ich auch nicht...naja, im notfall muss ich wohl doch die dll dynamisch linken! das statische widerstrebt auch irgendwie meinen programmier-vorgaben
-
honker schrieb:
also mein problem ist, dass die dll wichtige algorithmen enthält, die keiner einsehen darf!
In der Beziehung macht es absolut keinen Unterschied, ob der Code in einer DLL liegt oder direkt in der Exe.
Beides kann disassembliert werden, über die Sinnhaftigkeit solchen "Reverse Engineerings" ist im "Rund um"-Forum aber schon zur Genüge debattiert worden (Stichwort 'decompiler').
-
Jansen schrieb:
In der Beziehung macht es absolut keinen Unterschied, ob der Code in einer DLL liegt oder direkt in der Exe.
hm, also ein unterschied ist doch zum beispiel, dass es einfacher ist, die funktionen einer dll ausfindig zu machen, oder nicht? bei mir müsste ein programmierer nur die dll einbinden und kann quasi die funktion nutzen
der weg über das disassemblieren ist schon imens umständlicher!
Edit:
Zitate bitte auf das Notwendigste beschränken. Danke!
-
hi honker,
also wenn du willst, das die dll in die exe gelinkt wird, also nicht mehr als eigenständige datei vorliegt, musst du eine borland-spezifische dll erstellen, also eine bpl (borland package library) was auch eine dll ist nur eben mit anderer endung und das sie von der ide besonders gehandhabt werden kann. diese bpl kannst du dann direkt in die exe linken, oder aber auch nicht, und einzeln mitgeben...
mfg
murphy
-
hm, den weg über die bpl-datei find ich nicht so gut...das problem dabei ist, dass ich nicht weiß, wie ich eine bpl-datei erstelle bzw wie ich sie aus meiner dll erstelle.
ich kenn den inhalt meiner dll-datei nicht. ich hab sie von einem kollegen bekommen und weiß nur mit der funktion umzugehen! wie ich zum ergebnis der funktion komme ist mir unbekannt. die dll selber ist in purebasic programmiert...müsste ich zum erstellen der bpl eine eigene in c++ geschriebene dll programmieren?
*honkeraufdenschlauchsteht*