Hallo,
ich habe hier eine
DLL, die angeblich in
ANSI-C geschrieben wurde (so sagt es zumindest der Entwickler).
Beim stöbern in diversen Foren und Threads, habe ich meine erste kleine
DLL-Stunde nun hinter mir und wollte eine Funktion dieser
DLL aufrufen.
In der technischen Dokumentation der
DLL steht folgendes:
xsGetID
long xsGetID();
Bsp.: ID = xsGetID()
Hier der Quellcode, mit dem ich nun versuche, diese Funktion aufzurufen:
Delphi-Quellcode:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
const
DLLNAME = '
FF.dll';
function xsGetID(): LongInt;
stdcall
implementation
{$R *.dfm}
function xsGetID(): LongInt;
external DLLNAME;
stdcall;
procedure TForm1.Button1Click(Sender: TObject);
var
ID: LongInt;
begin
ID := xsGetID();
end;
end.
Kompilieren läßt sich das Programm ohne Probleme. Beim starten kommt folgende Meldung:
"FF_Demo.exe - Einsprungpunkt nicht gefunden
Der Prozedureinsprungpunkt "xsGetID" wurde in der
DLL "FF.dll" nicht gefunden."
Beim Klick auf "OK" und anschließend "F9", bleibt Delphi im CPU-Debugger hängen und schreibt folgendes:
"Benachrichtigung über Debugger-Problem
In Projekt D:\Programme\Borland\Delphi7\D-Progs\FF-Demo\FF_Demo.exe trat ein Problem mit folgender Meldung auf: 'Zugriffsverletzung bei 0x77896c94: Schreiben von Adresse 0x00030c94'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen."
Die
DLL ist in dem Programmverzeichnis vorhanden und nicht schreibgeschützt. Als Betriebssystem verwende ich Windows 2000.
Frage: Ist der Code oben korrekt, oder geht es da schon los und es sind Fehler drin? Falls keine Fehler im Code erkennbar sind: Was könnte noch zu dem Fehler führen?