Seite 1 von 1

DLL von anderem Ordner laden

Verfasst: 24.04.2005 00:39
von Green Snake
guten Abend, besser gute nacht

gibt es eine möglichkeit, das meine exe eine dll von einem anderen pfad findet, als i gleichen verzeichniss?

damit meine ich zb midas11.dll oder atl.dll.

hier ist meine exe.
jetzt will ich, das zb die dll midas11.dll im ordner Dll ist.
also midas11.dll befindet sich im verzeichnis
DLL\midas11.dll

geht das das die exe diese "wichtige" dll von diesem pfad lädt?
es sieht nämlich nicht schön aus, wen alle dlls in dem verzeichnis wie die exe ist.

Verfasst: 24.04.2005 01:38
von Laurin

Code: Alles auswählen

If OpenLibrary(#DLL, "/DLL/eine_DLL.dll")
EndIf
So?

nein, leider nicht

Verfasst: 24.04.2005 01:48
von Green Snake
hallo

ich meine eine standart dll, wie zb die midas11.dll.
ohne sie, kann man keine musik module abspielen.

so eine möchte ich, in einem anderen ordner haben, als meine exe.
zb so

hier ist meine exe --> hier ein ordner ---> hier di midas11.dll

dein code funktioniert meiner meinung nach nur bei selbst erstellten dlls bzw keine standart dlls.

trotzdem danke für deine hilfe

Verfasst: 24.04.2005 02:40
von diGGa
also wenns standard is brauchste die ja eh nich mitliefern, und alles andere kannst ja ganz normal einbinden oder nich^^

Re: DLL von anderem Ordner laden

Verfasst: 24.04.2005 10:46
von ts-soft
Green Snake hat geschrieben:gibt es eine möglichkeit, das meine exe eine dll von einem anderen pfad findet, als i gleichen verzeichniss?
Bei OpenLibrary kannste selbstverständlich einen Pfad mit angeben
Green Snake hat geschrieben: damit meine ich zb midas11.dll oder atl.dll.
jetzt will ich, das zb die dll midas11.dll im ordner Dll ist.
also midas11.dll befindet sich im verzeichnis
DLL\midas11.dll
Wenn Du Dir eine neue Module Lib programmierst :D sollte es auch gehen. Die ATL.dll wird im allgemeinen nicht gebraucht, da sie sich auf den meisten Systemen befindet.
Green Snake hat geschrieben: geht das das die exe diese "wichtige" dll von diesem pfad lädt?
es sieht nämlich nicht schön aus, wen alle dlls in dem verzeichnis wie die exe ist.
Vielleicht sollten Deine Kunden oder wer auch immer, Deine Exe über eine Verknüpfung starten, so das Ihnen die wahre Schönheit Deines Programmes nicht verschandelt wird. :D

Gruß
Thomas

Verfasst: 24.04.2005 11:04
von Zaphod
es gibt keine standard dlls. *jede* dll wurde mal von jemandem selbstprogrammiert. du kannst openlibrary selbst mit den windows dlls benutzen.

Verfasst: 24.04.2005 12:25
von Danilo
Zaphod hat geschrieben:es gibt keine standard dlls. *jede* dll wurde mal von jemandem selbstprogrammiert. du kannst openlibrary selbst mit den windows dlls benutzen.
Es ging Green Snake hier um PureBasic-Befehle die intern auf
DLLs zugreifen.
Das sind alle Windows-DLLs, Engine3D.dll und eben auch diese
Midas11.dll.

Da diese DLL-Funktionen in der Importsektion der EXE sind
(statisch hinzugelinkt), werden diese DLLs im EXE-Verzeichniss
und im Systemverzeichniss (bzw. in %PATH%) gesucht.
Sind sie dort nicht vorhanden, bringt der Windows-EXE-Loader
einen Fehler.

Die Windows-DLLs sind eh überall vorhanden. Bei anderen
statisch gelinkten DLLs (Engine3D.dll, Midas11.dll) kann man
es so machen das ein Installationsprogramm diese im System
installiert. Ist aber nicht unbedingt anzuraten.

Eine andere Möglichkeit wäre einen Selbstentpacker zu benutzen.
Man schreibt also ein Mini-Programm welches die EXE und die
2 DLLs enthält. Beim Start werden die einfach nach %TEMP%\Zufallsname\
entpackt, dann die EXE ausgeführt. Am Ende (oder nach Neustart)
wird %TEMP%\Zufallsname\ einfach wieder gelöscht.

Solche Packerprogramme hab ich hier schonmal gesehen, ich
glaube eines war mal vor Jahren von Rings.
Kann aber auch jeder selbst schreiben, ist ja nicht viel.