![]() |
dll verursacht nach dem Ausführen Zugriffsverletzung
Hallo Leute,
ich versuche grade eine Funktion aus einer externen dll in Delphi anzusprechen. Das ganze funktioniert so weit ich das erkennen kann auch ganz gut. Nur läuft meine prozedure danach immer auf eine Zugriffsverletzung. Bis jetzt konnte ich sie immer über eine C# Programm problemlos ansprechen:
Code:
loadJavaVirtualMachine(secSignerInstallPath, maxMem); //liefert 0 zurück wenn OK
[DllImport(DLLPath, EntryPoint="LoadJavaVM", CharSet=CharSet.Ansi,
SetLastError=true, ExactSpelling=true, CallingConvention=CallingConvention.Cdecl)] public static extern int loadJavaVirtualMachine(string InstallPath, int maxMem); Genau diese dll wollte ich nun auch in Delphi einbinden.
Code:
Die Prozedur loadVM wird ausgeführt, die funktion DSLoadJavaVM gibt mit ihrem Rückgabewerte an, dass der Vorgang erfolgreich war, aber nach Abschluss der Prozedur erscheint folgende Fehlermeldung:
uses
ShareMem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TExt_LoadJavaVM_ = function(inInstallPath : PChar; maxMem : Integer): Integer; stdcall; type TFormDllTest = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } InstallPath : PChar; maxMem : LongInt; DSLoadJavaVM: TExt_LoadJavaVM_; procedure loadVM; end; var FormDllTest: TFormDllTest; implementation {$R *.dfm} procedure TFormDllTest.Button1Click(Sender: TObject); begin loadVM; Showmessage('hi'); //Diese Message wird niemals angezeigt end; procedure TFormDllTest.loadVM; var LibHandle: THandle; liTest : integer; begin LibHandle := loadLibrary('CallSecSignerDLL.dll'); if LibHandle <> 0 then @DSLoadJavaVM := getProcAddress(LibHandle, 'LoadJavaVM'); if (@DSLoadJavaVM <> nil) then begin liTest := DSLoadJavaVM('c:\extS', 256); end; freeLibrary(LibHandle); Showmessage(IntToStr(lITest)); //Diese Message wird noch angezeigt und gibt 0 zurück (0 = erfolgreich) end; end. "Im Projekt ... trat eine Problem mit folgender Meldung auf: 'access violation at 0x00000000: read of address 0x00000000'. Prozess angehalten. Einzelne Anweisungen oder Start fortsetzen" Hat Jemand eine Idee? |
AW: dll verursacht nach dem Ausführen Zugriffsverletzung
|
AW: dll verursacht nach dem Ausführen Zugriffsverletzung
Super, danke. Jetzt funktioniert es ^^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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