Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme beim Zugriff auf eine DLL (https://www.delphipraxis.net/43708-probleme-beim-zugriff-auf-eine-dll.html)

Catbytes 7. Apr 2005 15:29


Probleme beim Zugriff auf eine DLL
 
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?

Bernhard Geyer 7. Apr 2005 15:34

Re: Probleme beim Zugriff auf eine DLL
 
Zitat:

Zitat von Catbytes
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?

Wurde die Funktion wirklich mit der schreibweise Exportiert (xsGetID) (Groß-/Gleinschreibung, kann mit DependencyWalker) überprüft werden.

Catbytes 7. Apr 2005 15:48

Re: Probleme beim Zugriff auf eine DLL
 
Zitat:

Zitat von Bernhard Geyer
Wurde die Funktion wirklich mit der schreibweise Exportiert (xsGetID) (Groß-/Gleinschreibung, kann mit DependencyWalker) überprüft werden.

Natürlich nicht *grummel* :twisted: :twisted:

DANKE! Genau das wars!

Das Programm (DependencyWalker) kannte ich nicht und hat mir auf Anhieb geholfen ;-)

Die Funktion heißt eigentlich "dllGetID()" (In der technischen Doku wie gesagt als xsGetID() gelistet)...

Darf ich jetzt den Dienstleister verklagen? :gruebel: :lol:

Danke - Problem gelöst...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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