![]() |
DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Hallo,
ich habe ein kleines Problem und ich denke das ist nur irgendeine Einstellung im OS, komme aber nicht drauf. Folgender Code geht in meiner XE7 Umgebung (Win10 x64):
Delphi-Quellcode:
Der gleiche Code in meiner Delphi 10.1 Umgebung geht nicht.
var
myDllHandle: HMODULE; sFilePath: String; begin sFilePath := 'C:\WINDOWS\system32\myTest.dll'; if FileExists(sFilePath) then begin myDllHandle := SafeLoadLibrary(sFilePath); if myDllHandle <> 0 then begin ShowMessage('Laden erfolgreich'); end; end; FileExists liefert noch True aber in myDllHandle steht dann eine 0. Die Dll ist definitiv da und ist in beiden Umgebungen die gleiche. Diese liegt eigentlich im SysWow64 aber das wird dann ja umgeswitcht in System32. Also im System32 liegt direkt KEINE Dll von mir. Habt ihr spontan eine Idee? |
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Delphi-Quellcode:
Aber wenn diese Datei sowieso im System-Verzeichnis liegt, würde ich niemals den Pfad mit angeben.
myDllHandle := {SafeLoadLibrary}LoadLibrary(sFilePath); // falls SafeLoadLibrary das GetLastError beeinflusst, weil dort nach dem LoadLibrary noch andere APIs aufgerufen werden
if myDllHandle <> 0 then ShowMessage('Laden erfolgreich') else RaiseLastOSError; |
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Sind es die gleichen .dproj-Dateien? Startest du aus der IDE oder die .exe direkt aus dem Explorer?
Mir fällt nur ein dass man in der IDE ja bspw. die Umgebungsvariablen standardmäßig abgeändert sind... Ich kenne SafeLoadLibrary jetzt nicht, was ist denn wenn du ganz normal ![]()
Delphi-Quellcode:
zurückgibt?
RaiseLastOsError()
(Wurde schon erwähnt) |
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Habe es so versucht:
Delphi-Quellcode:
GetLastError:
LoadLibrary(@sFilePath); //SafeLoadLibrary(sFilePath);
ERROR_MOD_NOT_FOUND 126 (0x7E) The specified module could not be found. Habe die gleiche Exe Datei jeweils getestet ohne Delphi IDE |
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Eventuell eine doofe Frage, aber ist die DLL eine 64 Bit DLL und das Target in Delphi 10 auch?
Also passt die "bittness" zusammen? |
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Auch ohne komplette Pfadangabe und mit LoadLibrary kommt ErrorCode 126
|
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Target ist immer 32 bit, immer die gleiche Exe (compiliere zwischendurch NICHT neu, sondern kopiere nur die Exe von A nach B).
DLL ist 32bit OS ist 64bit |
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Die Suchmaschine meines Vertrauens zu "ERROR_MOD_NOT_FOUND" brachte das hier hervor:
![]() Hört sich eigentlich plausibel an: Deine DLL ist noch von anderen DLLs abhängig - Und die fehlen. |
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Vielleicht ein Berechtigungsproblem? Was passiert, wenn die Exe als Admin ausgeführt wird? Wirklich explizit Rechtsklick -> Als Administrator ausführen.
|
AW: DLL Laden Win10 x64 - XE7 <-> Delphi 10.1 Berlin
Zitat:
Im 64Bit Explorer also Datei unter C:\Windows\SysWOW64 ablegen! Das ist die komische Magie von Microsoft bei 64 Bit Systemen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz