Hallo,
ich habe folgendes Problem:
Ein Host-Programm erlaubt das Einbinden von DLLs,
um selbstgebastelte DLLs zum Laufen zu bringen.
Ich habe also in Delphi ein neues DLL-Projekt
angelegt.
Die DLL sieht so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| library DLLtest;
uses sharemem, SysUtils, Classes, dialogs;
{$R *.res}
function Addieren(x,y:word):Word; stdcall; begin Addieren:=x+y; end;
function Stringtest(x:word; const y:pchar):pchar; stdcall; begin Stringtest:=pchar('String = '+IntToStr(x)+y+'XX'); end;
exports Addieren, Stringtest;
begin end. |
Die Kommunikation mit der DLL klappt toll (Addieren, Stringtest).
Das Problem ist nur, dass beim Beenden des Host-Programms bzw. dem "Entladen" der
DLL im Host-Programm kommt es zu einer Exception c0000005 an Adresse 00000000
lesen von Adresse 00000000.
(Importiere ich die user32.dll in das Programm und mache eine MessageBoxA
damit und beende dann das Programm, beendet es sich ganz
normal. Das Problem sollte also an meiner DLL liegen.)
Für Hilfen wäre ich sehr dankbar!
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt