Einzelnen Beitrag anzeigen

stalkingwolf

Registriert seit: 6. Mai 2011
518 Beiträge
 
#1

DLL Funktions Aufruf führt zu access violation in eigener procedure

  Alt 2. Mai 2017, 14:44
2 Probleme habe ich aktuell die nicht nicht ganz verstehe.

Wir setzen eine DLL von A-Trust ein zum auslesen einer Smartcard auf einem USB Stick.
Das ganze funktioniert eigentlich einwandfrei, wenn ich mein Programm als DEBUG Build laufen lassen.
Schalte ich auf RELEASE um, dann führen einige DLL Funktionsaufrufe zu einer Access Violation wenn meine procedure in Delphi beendet wird, welche die DLL Funktion aufruft.

Dann habe ich mit einer DLL Funktion das Problem das sie in Formclose ohne Fehler und in einer Procedure mit Fehler am Ende der Procedure aufgerufen wird.

z.b diese Funktion :
Code:
long Finalize(void* ptr);
Code:
function Finalize(ptr:integer):long; stdcall; external 'asignRKCom.dll';
// Funktioniert
Code:
procedure Tfmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Finalize(h);
end;
// Ergibt einen Fehler
Code:
procedure Tfmain.myFinalize;
var erg:integer;
begin
    erg:=Finalize(h); // Erg = 0;
end; // <---- Fehler

procedure Tfmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    myFinalize;
end;
Ich weiß nicht ob es ein Fehler meiner Deklaration ist oder Delphi ein Problem hat.
Oder es am Namen Finalize liegt.


Edit :
ich habe das ganze einmal anders Deklariert
Code:
function _Finalize(ptr:integer):long; stdcall; external 'asignRKCom.dll' name 'Finalize';
Das brachte auch nichts.

Geändert von stalkingwolf ( 2. Mai 2017 um 14:59 Uhr) Grund: Edit
  Mit Zitat antworten Zitat