Hallo
Ich will in meinem Programm eine
DLL dynamisch laden. Das funktioniert alles. Doch wenn ich das Programm beenden kommt dann immer die Fehlermeldung: "Anwendungsfehler! Zugriffsverletzung an Adressee bla bla...."
Ich habe versucht im OnClose mit :
if Hauptansicht.CSDLLHandle <> 0 then FreeLibrary(Hauptansicht.CSDLLHandle);
den
Handle zu beenden. Aber ob mit oder ohne dieses Zeile verbessert sich nichts.
Wo könnte der Fehler liegen?
Die
DLL habe ich selber geschrieben. Die Funktionen der
DLL "funktionieren"
Wenn ich versuche ein 2x die gleiche
DLL zu öffnen gibt es auch eine Fehlermeldung. Eigentlich müsste der Handele ja freigegeben und neu geöffnet werden ?
Hier ein kleiner Auschnitt beim laden der
DLL:
Delphi-Quellcode:
if OpenDialog1.Execute
then
begin
if Hauptansicht.CSDLLHandle <> 0
then FreeLibrary(Hauptansicht.CSDLLHandle);
Hauptansicht.PfadChecks:=OpenDialog1.FileName;
Hauptansicht.CSDLLHandle := LoadLibrary(PChar(Hauptansicht.PfadChecks));
if Hauptansicht.CSDLLHandle <> 0
then
begin
FuncPtr := GetProcAddress(Hauptansicht.CSDLLHandle,'
DLLCSCheck');
FuncPtr := GetProcAddress(Hauptansicht.CSDLLHandle,'
Abgleich');
if FuncPtr =
nil then
begin
showMessage('
Die DLL enthält keinen Abgleich!');
end;
if FuncPtr <>
nil then
begin
@Berechnung := FuncPtr;
end;
[edit=sakura] [delphi]-Tags, Leeeerzeilen entfernt. Mfg, sakura[/edit]
[edit=sakura] Personality auf Delphi Win32 gesetzt. Mfg, sakura[/edit]