Einzelnen Beitrag anzeigen

Thomas233

Registriert seit: 20. Feb 2004
Ort: Villach
66 Beiträge
 
Delphi 2005 Personal
 
#1

Zugriffsverletzung beim Aufrufen einer eigenen DLL

  Alt 20. Nov 2004, 17:43
Hallo,

ich habe ein Problem beim Verwenden meiner selbst geschrieben DLL in meinen Programm, und zwar handelt es sich um eine Zugriffsverletzung die beim Aufrufen einer Prozedur aus einer DLL entsteht.

Die Dll wird statisch ins Programm eingebunden. Sie parst eine Datei welche auf der Fesplatte vorhanden ist.

Ich habe DLLs bisher immer gemieden da ich immer dieses Zugriffsverletzungs-Problem mit jeder DLL die ich erstellt hatte gehabt habe.

Irgendwo scheine ich da immer einen Fehler zu machen obwohl ich nach einem Dll-Tutorial, welches ich bei Delphi-Source.de fand, vorgehe.

Wenn ich den Quellcode direkt in mein Programm einbinde (also nicht in die Dll auslagere sondern in eine Unit des Programmes) dann gibts keine Probleme, es kann also nur an der Dll selbst liegen !
Es ist auch egal welche Aufrufkonvention ich verwende, es kommt immer wieder eine Zugriffsverletzung.

Delphi-Quellcode:
// Quellcode der Dll
library gui;

uses
  SysUtils,
  Classes,
  d3d_sprite_gui in '..\..\..\d3d_sprite_gui.pas',
  d3d_input in '..\..\..\d3d_input.pas',
  dxhelp in '..\..\..\dxhelp.pas',
  d3dx9 in '..\..\..\d3dx9.pas',
  Direct3D9 in '..\..\..\Direct3D9.pas',
  DirectInput9 in '..\..\..\DirectInput9.pas',
  dxerr9 in '..\..\..\dxerr9.pas',
  DXFile in '..\..\..\DXFile.pas',
  d3d_sprite_textout in '..\..\..\d3d_sprite_textout.pas',
  d3d_sprite in '..\..\..\d3d_sprite.pas',
  uTools in '..\..\..\uTools.pas',
  StrUtils;

var CurPos:integer=-1;
    Sl:TStringlist;
    GuiDev:TD3DGui;
    EndPosofproc:integer;

{$R *.res}

procedure Gui_Add_Cmd(str:string);
begin
//...
end;

procedure Gui_Set_Cmd(str:string);
begin
//...
end;

procedure Gui_Cmd;
var i:integer;
begin
//...
end;

procedure Proc_Cmd(findproc:Shortstring);
var i:integer;
begin
//...
end;

procedure ParseGuiFromFile(_Gui:TD3DGui;filename:ShortString;menu:ShortString); pascal;
begin
GuiDev:=_Gui;
Sl:=TStringlist.Create;
Sl.LoadFromFile(filename);

Proc_Cmd(menu);

Sl.Free;
end;

exports
  ParseGuiFromFile;

begin

end.
Delphi-Quellcode:
//Deklaration
procedure ParseGuiFromFile(_Gui:TD3DGui;filename:ShortString;menu:ShortString); pascal;
//Implementierung
procedure ParseGuiFromFile(_Gui:TD3DGui;filename:ShortString;menu:ShortString); pascal; external 'data\dlls\gui.dll';
//Aufruf
ParseGuiFromFile(Gui,'data\scripts\gui\gui1.whs','GuiMainMenu');
Ich bin echt ratlos und so schön langsam fange ich an den ganzen Dll-Kram zu hassen

Wäre echt nett wenn einer mir einen Tipp zur Vermeidung des Problems geben könnte

Vielen Dank im Vorraus !

Liebe Grüße,
Thomas
  Mit Zitat antworten Zitat