DLL von anderem Ordner laden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

DLL von anderem Ordner laden

Beitrag 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.
-.-"
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Code: Alles auswählen

If OpenLibrary(#DLL, "/DLL/eine_DLL.dll")
EndIf
So?
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

nein, leider nicht

Beitrag 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
-.-"
Benutzeravatar
diGGa
Beiträge: 249
Registriert: 01.04.2005 11:00
Kontaktdaten:

Beitrag von diGGa »

also wenns standard is brauchste die ja eh nich mitliefern, und alles andere kannst ja ganz normal einbinden oder nich^^
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: DLL von anderem Ordner laden

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

es gibt keine standard dlls. *jede* dll wurde mal von jemandem selbstprogrammiert. du kannst openlibrary selbst mit den windows dlls benutzen.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten