![]() |
Dynamisch DLL laden in Delphi 7 & Delphi 2010
Hallo,
ich lade in Delphi 7 und Delphi 2010 eine DLL dynamisch über:
Delphi-Quellcode:
wenn ich nun die DLL in Delphi 7 debugge, enthält die DLL eine Variabel aus dem Hauptprogramme welche gefüllt ist.
var
hDLL: THandle; pCode: Pointer; type TProcMainEntry = function: TForm; begin hDll := 0; if FileExists(Pfad + vpeDllName) then hDLL := LoadLibrary(PChar(Pfad + vpeDllName)) else SetLastError(2); if hDLL = 0 then RaiseLastOSError; pCode := GetProcAddress(hDLL, PChar(vpeFunction)); if pCode = nil then RaiseLastOSError; Result := TProcMainEntry(pcode)(); In Delphi 2010 ist diese Variabel nil. Mir fällt auf das Delphi 7 den Stack-Trace vom Hauptprogramm mitführt, Delphi 2010 nur den Stack-Trace vom der DLL selber. Muss ich beim laden der DLL in Delphi 2010 etwas mehr beachten? mit freundlichen grüßen, Andreas |
Re: Dynamisch DLL laden in Delphi 7 & Delphi 2010
Zitat:
|
Re: Dynamisch DLL laden in Delphi 7 & Delphi 2010
sorry, dann hab ich mich falsch ausgedrückt, das ist der Fall.
Ich habe eine Virtuelle Maschine mit Delphi 2010 und dem selben Programm und meinen Rechner mit Delphi 7 und dem selben Programm. Nur das Verhalten ist in Delphi 7 anscheinend anders als in Delphi 2010 ? |
Re: Dynamisch DLL laden in Delphi 7 & Delphi 2010
Hallo,
soviel ich weiß werden Dll-Exporte immer als Ansi-String (PAnsiChar) angegeben. In Delphi 2010 ist PChar aber PWideChar und nicht PAnsiChar. Schau dir mal die Deklaration von GetProccAddress in Delphi 2010 an. Eigentlich sollte der Compiler unter Delphi 2010 den Aufruf von GetProcAddress anmeckern, da PChar(PWideChar unter Delphi 2010) ungleich PAnsiChar ist. Versuch einfach mal vpeFunction als AnsiString zu deklarieren und auf PAnsiChar zu casten. Ciao Chris |
Re: Dynamisch DLL laden in Delphi 7 & Delphi 2010
Zitat:
hDLL ist <> 0 und pCode ist <> nil ... nur werden in dem DLL Projekt die globalen Variabeln des Hauptprojektes nicht übernommen, in Delphi 7 anscheinend aber schon. Aber ich probier das trotzdem mal aus... |
Re: Dynamisch DLL laden in Delphi 7 & Delphi 2010
Check mal in D2010 ob mit Runtimepackages kompiliert wurde (siehe auch Codegear-Forum "embarcadero.public.delphi.nativeapi").
AFAIK kann es passieren das diese Option beim umstellen von D7-> D2010 verloren geht. |
Re: Dynamisch DLL laden in Delphi 7 & Delphi 2010
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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