Einzelnen Beitrag anzeigen

Aurus

Registriert seit: 26. Aug 2005
Ort: Schweiz
53 Beiträge
 
#1

Warum stützt mein Programm mit dynamischer DLL ab?

  Alt 19. Mai 2006, 08:01
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]
  Mit Zitat antworten Zitat