Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Im Order liegende DLL laden schlägt fehl *wall* (https://www.delphipraxis.net/72100-im-order-liegende-dll-laden-schlaegt-fehl-%2Awall%2A.html)

Balu der Bär 25. Jun 2006 18:24


Im Order liegende DLL laden schlägt fehl *wall*
 
Moin,

entweder ich bin zu blöd oder ... ach was weiß ich:

Ich möchte ganz einfach eine DLL laden, die in einem anderen Ordner liegt. Liegt die DLL im gleichen Verzeichnis wie die EXE, geht alles klar:
Delphi-Quellcode:
h := LoadLibrary('pics.dll');
Nun will ich aber das die DLL in einem anderen Ordner liegt, um genau zu sein in dem Ordner 'lib'. Problem ist nur, dass es einfach nicht gehen will. :wall:

Alle Möglichkeiten die mir einfielen gehn nicht:
Delphi-Quellcode:
h := LoadLibrary('lib/pics.dll');
Delphi-Quellcode:
h := LoadLibrary('/lib/pics.dll');
Delphi-Quellcode:
h := LoadLibrary('\lib\pics.dll');
Delphi-Quellcode:
h := LoadLibrary('lib\pics.dll');
Selbst
Delphi-Quellcode:
h := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'lib/pics.dll'));
geht nicht. Ich bin echt verzweifelt, liegt wohl auch daran das in meinem Zimmer 34°C sind. Es kommt übrigens immer der Fehler DLL blbla nicht gefunden...

Jemand ne Idee? :-(

mirage228 25. Jun 2006 18:30

Re: Im Order liegende DLL laden schlägt fehl *wall*
 
Unter Windows musst Du auch den Backslash \ zum Seperieren von Ordnern verwenden.

Delphi-Quellcode:
h := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + 'lib\pics.dll'));
// oder
h := LoadLibrary('.\lib\pics.dll');
mfG
mirage228

Muetze1 25. Jun 2006 18:36

Re: Im Order liegende DLL laden schlägt fehl *wall*
 
Zitat:

Zitat von Balu der Bär
Es kommt übrigens immer der Fehler DLL blbla nicht gefunden...

Jemand ne Idee? :-(

Ja, ich! *meld*

Wenn diese Meldung kommt, dann benötigt diese DLL zum Laden eine andere DLL (welche statisch eingebunden ist) und diese wird nicht gefunden. Deshalb schlägt das Laden der pics.dll fehl.

Balu der Bär 25. Jun 2006 18:37

Re: Im Order liegende DLL laden schlägt fehl *wall*
 
Scheinbar ist es doch zu heiß hier. :wall:

Ich hatte vergessen die Funktion die ich deklariert hatte auch den Ordner zu ändern, also
Delphi-Quellcode:
function GetAuthorization(): PChar; stdcall; external 'lib/pics.dll';
:oops:

@David: Es geht auch nur mit /. :P

Muetze1 25. Jun 2006 18:41

Re: Im Order liegende DLL laden schlägt fehl *wall*
 
Ich stelle mal eine Vermutung an: Du weisst überhaupt nicht was du machst, oder?

Warum bindest du diese Funktion statisch in dein Programm ein, wenn du hier versuchst die DLL dynamisch mit LoadLibrary zu laden? Du brauchst kein LoadLibrary anzuwenden, wenn deine DLL statisch angezogen wird.

Balu der Bär 25. Jun 2006 18:45

Re: Im Order liegende DLL laden schlägt fehl *wall*
 
Ich brauch die DLL aber auch dynamisch, da ein anderes Form dies benötigt und ich es so in die Unit schreiben musste.

Eigentlich dachte ich schon das ich weiß was ich mache. :gruebel:

Muetze1 25. Jun 2006 18:53

Re: Im Order liegende DLL laden schlägt fehl *wall*
 
Zitat:

Zitat von Balu der Bär
Ich brauch die DLL aber auch dynamisch, da ein anderes Form dies benötigt und ich es so in die Unit schreiben musste.

Wozu? Wenn du einmal eine Funktion der DLL statisch einbindest, dann ist die DLL required - dein Prog startet nicht ohne die DLL. Wenn du nun also noch in dem Code LoadLibrary() auf diese DLL ausführst, dann hast du doch nur eine zusätzliche Fehlerquelle.
Dein Argument ist so oder so unverständlich. Wenn du eine DLL hast, dann bau dir eine Unit welche alle Funktionen der DLL als Prototypen deklariert und von mir aus auch gleich statisch einbindet (wie deine gezeigte Codezeile zur statischen Einbindung). Und ob diese Unit nun in einer oder 2 anderen Units in der Uses Liste steht ist doch vollkommen wurst. Ich verstehe nicht was du da denn noch alles zusätzlich schreiben solltest in der Form?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr.

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