Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   windows 10 loadlibrary error (https://www.delphipraxis.net/187371-windows-10-loadlibrary-error.html)

HPW 23. Nov 2015 19:43

windows 10 loadlibrary error
 
Hallo,

Seit langer Zeit hatte ich folgenden code zum Dll-Laden genutzt:

Delphi-Quellcode:
DllHandle := LoadLibrary( Pchar( 'xxxxxx.dll' ));


Ich habe mich also darauf verlassen, das Windows die Dll im Suchpfad mit den bekannten Regeln findet.
Dabei war meine Dll im Programmverzeichnis.

Unter Win10 geht das nun so nicht mehr.
Nun muss man den kompletten Pfad mitgeben damit es wieder funktioniert.

Grüsse,

Hans-Peter

Luckie 23. Nov 2015 20:59

AW: windows 10 loadlibrary error
 
Delphi-Quellcode:
LoadLibrary( Pchar( 'xxxxxx.dll' ))
Du lädst die DLL aus dem aktuellen Arbeitsverzeichnis, welches nicht zwingen das Programmverzeichnis sein muss. Unter Windows < 10 hat es wohl eher durch Zufall funktioniert.

SMO 24. Nov 2015 00:07

AW: windows 10 loadlibrary error
 
Zitat:

Zitat von Luckie (Beitrag 1322284)
Du lädst die DLL aus dem aktuellen Arbeitsverzeichnis, welches nicht zwingen das Programmverzeichnis sein muss. Unter Windows < 10 hat es wohl eher durch Zufall funktioniert.

Stimmt nicht. Den Regeln nach wird immer zuerst im Programmverzeichnis gesucht. Das aktuelle Arbeitsverzeichnis kommt im normalen "SafeDllSearchMode" erst an vorletzter Stelle. Daran wird sich in Windows 10 bestimmt nichts geändert haben.

Hans-Peter, wie heißt denn die DLL genau? Falls sie denselben Namen wie eine der "KnownDLLs" hat, kann es nicht funktionieren. Ob sich an der Liste der KnownDLLs in Windows 10 etwas geändert hat, weiß ich nicht.

Der schöne Günther 24. Nov 2015 09:21

AW: windows 10 loadlibrary error
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ohne es nachgeschlagen zu haben: Sagt einem der where-Befehl (in der Konsole) nicht sogar genau die Reihenfolge in welcher sich eine Anwendung für die DLL entscheiden würde?

Luckie 24. Nov 2015 11:25

AW: windows 10 loadlibrary error
 
Ok, stimmt. Ist ja eine DLL und keine normale Datei. Aber wenn er weiß, wo sie liegt (Programmverzeichnis) warum gibt er dann nicht gleich den Pfad mit an? Dann würde es erst gar nicht zu solchen Fehlern kommen. Denn offensichtlich hat sich zu Windows 7/8 doch was geändert.

SMO 24. Nov 2015 15:06

AW: windows 10 loadlibrary error
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1322297)
Ohne es nachgeschlagen zu haben: Sagt einem der where-Befehl (in der Konsole) nicht sogar genau die Reihenfolge in welcher sich eine Anwendung für die DLL entscheiden würde?

Nein, eben nicht, siehe den MSDN-Artikel, den ich verlinkt habe, oder die Hilfe zu LoadLibrary.

Zitat:

Zitat von Luckie (Beitrag 1322319)
Ok, stimmt. Ist ja eine DLL und keine normale Datei. Aber wenn er weiß, wo sie liegt (Programmverzeichnis) warum gibt er dann nicht gleich den Pfad mit an?

Warum sollte man den Pfad für eine eigene DLL angeben, die im Programmverzeichnis liegt, wenn dort sowieso als erstes gesucht wird?

Zitat:

Zitat von Luckie (Beitrag 1322319)
Dann würde es erst gar nicht zu solchen Fehlern kommen. Denn offensichtlich hat sich zu Windows 7/8 doch was geändert.

Was zu beweisen wäre. Der Fehler könnte jede Menge andere Ursachen haben, die nichts mit dem DLL-Suchverhalten zu tun haben. Solange Hans-Peter uns keine Details nennt, wie z.B. den konkreten Dateinamen und den Fehlercode (GetLastError) direkt nach LoadLibrary, ist alles nur Spekulation.

HPW 24. Nov 2015 17:03

AW: windows 10 loadlibrary error
 
Hallo,

In meinem Fall war es die newlisp.dll mit der ich den Interpreter in meine Anwendung lade.
Also kaum eine KnownDll.
Windows 10 macht jedenfalls definitiv etwas anderes als die Versionen davor.

Jetzt nerven nur noch die ganzen Warnmeldungen beim Download und installieren wegen fehlender Signatur. Für kleine Software-Projekte sehr schwierig.

Grüsse,

Hans-Peter

Sir Rufo 24. Nov 2015 19:24

AW: windows 10 loadlibrary error
 
Dann signiere deine Anwendungen doch einfach ...

Ein selbst erstelltes Zertifikat reicht in dem Fall wohl aus und der Installierende muss nur einmal dein Zertifikat als vertrauenswürdig abnicken, danach ist es wie bei einem gekauften Zertifikat.

Dalai 24. Nov 2015 20:27

AW: windows 10 loadlibrary error
 
Auch bei LoadLibrary kann man bei Fehlschlag GetLastError bemühen, um herauszufinden, warum das Laden der DLL nicht klappt.

[EDIT] Hoppla, SMO hat ja bereits darauf hingewiesen. Naja, doppelt hält besser :mrgreen: [/EDIT]

MfG Dalai

Luckie 24. Nov 2015 20:51

AW: windows 10 loadlibrary error
 
Und wenn da kommt: "File not found".... :cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Seite 1 von 2  1 2      

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