Einzelnen Beitrag anzeigen

Benutzerbild von Catbytes
Catbytes

Registriert seit: 7. Sep 2002
Ort: Heckendalheim
353 Beiträge
 
Delphi XE5 Enterprise
 
#1

Probleme beim Zugriff auf eine DLL

  Alt 7. Apr 2005, 15:29
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?
Catbytes
  Mit Zitat antworten Zitat