DLL löschen/beenden



  • hi!

    ich hab folgendes problem! ich habe eine dll, die eine komprimierte/gepackte datei entpackt und eine neue, entpackte datei erstellt! diese neue entpackte datei soll nach dem einlesen gelöscht werden, jedoch greift die dll noch drauf zu! ist es möglich, die dll während der laufzeit zu schließen?

    hier der aufruf der dll:

    //---------------------------------------------------------------------------
    TFrMain::TDLLRead()
    {
      //Erzeugen eines AnsiStrings mit dem Pfad der DLL
      AnsiString GetDll = "3diunpack.dll";
      HINSTANCE hInstance;
    
      //Laden der DLL und konvertieren des AnsiStrings in ein Char
      hInstance = ::LoadLibrary(GetDll.c_str());
      //DLL Funktion zuweisen
      pDllFunction = (DLLFUNCTION*)::GetProcAddress((HMODULE)hInstance, "DDI_Unpack");
    }
    //---------------------------------------------------------------------------
    void TFrMain::CallDllFunction()
    {
      long int iResult;
      AnsiString String1 = ODL->FileName;
      AnsiString String2 = "c:\\2di.3di";
      //DLL Funktion aufrufen, String1 entpacken und in string2 speichern
      if (pDllFunction) iResult = (*pDllFunction)(String1.c_str(),String2.c_str());
    }
    //---------------------------------------------------------------------------
    

    die neue datei 2di.3di soll nach dem entpacken geladen werden (klappt auch wunderbar) und danach gelöscht werden! geladen wird sie folgendermassen:

    TDLLTest();
      CallDllFunction();
      AnsiString l;
      l = ODL->FileName.c_str();
      bv.firstload = true;
      TFileStream *fd = new TFileStream(l, fmShareDenyNone);
    ...
    ..
    .
    

    leider kann ich beim tfilestream nur die konstande 'fmShareDenyNone' nutzen, da mir bei jeder anderen der zugriff verweigert wird 😞 nach dem schließen des programms kann ich die neue datei schließen! sowohl per hand, als auch mit meiner software!

    hat jemand eine idee, wie ich wieder zugriff auf die datei bekomme? vielleicht in dem ich die dll 'schließe' 😕

    danke sehr

    gruß

    hoeen



  • FreeLibrary() ist dein Freund.


Anmelden zum Antworten