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/)
-   -   Delphi Welche DLL's benötigt eine andere DLL beim Laden ? (https://www.delphipraxis.net/193782-welche-dlls-benoetigt-eine-andere-dll-beim-laden.html)

Jaynder 8. Sep 2017 10:45

Welche DLL's benötigt eine andere DLL beim Laden ?
 
Ich benutze in meinem Delphi-Projekt eine umfangreiche Sammlung von in C++ geschriebenen dll's. Nun gibt es einen neue Version dieser Bibliothek und mein LoadLibrary schlägt auf einmal mit GetLastError=193 fehl, weil irgendeine statisch nachgeladenen dll fehlt. Wie kann ich herausfinden, welche das ist?

Erweitert: wie kann ich vor dem LoadLibrary herausfinden, welche dll's von einer beliebigen dll benötigt werden? Dann könnte ich vorher prüfen, ob wirklich alle benötigten vorhanden sind.

mkinzler 8. Sep 2017 10:48

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
Da eignet sich der DependenyWalker sehr gut

Jaynder 8. Sep 2017 11:01

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
Der hilft mir leider nicht. Hat auch schon in der vorigen funktionierenden Version nur Fehler geworfen und dreht sich auch noch im Kreis.

Würde das auch lieber in meiner eigene App checken können 8-)

Jaynder 8. Sep 2017 11:07

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
ist ja auch schon von 2006 das Teil, dann wundert es mich nicht

TiGü 8. Sep 2017 11:08

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
Im Process Monitor beobachten, welcher Aufruf fehlschlägt!

jaenicke 8. Sep 2017 11:09

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
In deinem eigenen Programm bleibt dir denke ich nur einen Hook auf LoadLibrary zu setzen und zu schauen was da alles geladen wird nachdem du selbst LoadLibrary aufgerufen hast.

Mit dem (edit: gerade schon genannten) Process Monitor siehst du direkt welche DLLs (und andere Dateien) wo gesucht werden bevor der Fehler kommt und mit dem API Monitor kannst du die Aufrufe an LoadLibrary auch extern nachverfolgen (wäre hier aber etwas viel Aufwand, nur der Vollständigkeit halber).

Jaynder 8. Sep 2017 11:19

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
Danke für die Tipps, ich denke ich komme damit weiter

himitsu 8. Sep 2017 12:26

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
Auch wenn der DependenyWalker bissl "älter" ist,
an der grundsätzlichen Funktion der Win32-API und des PE-Formats hat sich seitdem nichts verändert.

Wenn es nur um "statische" Verlinkungen geht,
die Imports und Exports kannst du aus einer PE (EXE/DLL/BPL) auch selber auslesen.

Jaynder 8. Sep 2017 14:13

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
@himitsu: hast du das evtl ein wenig konkreter ?

Habe inzwischen mit PEStudio experimentiert. Das zeigt zwar nicht so einen Müll an wie der DW, findet aber die weiteren dll's nicht über den Suchpfad, sondern nur wenn sie direkt im Ausführungsverzeichnis liegen. Schade...

jaenicke 8. Sep 2017 15:05

AW: Welche DLL's benötigt eine andere DLL beim Laden ?
 
Mit dem Process Monitor siehst du die fehlende DLL in ein paar Sekunden...
Einfach filtern mit Process Name is DeineExe, dann nach dem LoadLibrary im Debugger oder mit einer MessageBox anhalten, dann einfach nachschauen was als letztes geloggt wurde...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 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