Dynamisch eingebundenne Dll's



  • Hi ich hab ein Programm geschrieben wo ich eine DLL-Datei, falls vorhanden, dynamisch einbinde. Ich will einen Ordner machen wo ich verschiedenne Dlls hinein kopieren kann. (Z.B Plugins) Die sollen dann alle dynamisch eingebunden werden. Mein problem ist nur das ich in dem Hauptprogramm den Dll namen eingeben muss. Gut den kann ich auch aus dem Ordner rauslesen. Aber dann fehlt mir immernoch eine Routine die alle dlls einbindet.

    //--- *.h
      private:	// Anwenderdeklarationen
        HINSTANCE DllInstance;
    
    //--- *.cpp
      if (!DllInstance) {
        DllInstance = LoadLibrary(plugin_path.c_str()); // DLL laden
          if (DllInstance) Memo1->Lines->Add("Plugin-DLL wurde geladen.");   
          else Memo1->Lines->Add("Plugin-DLL wurde nicht gefunden.");   
      };
    

    Das kann ich jetzt ja schlecht in eine Schleife rein setzen und alle Dlls damit laden. Kann mir da jemand weiter helfen?

    THX 😉



  • Hi ich habe kürzlich ähnliches gemacht.
    1. Schaffe dir am besten eine Plugin-Basisklasse (Bsp.: TPluginBasis) von der
    du alle anderen Plugins ableitest
    2. Schreibe für jede DLL eine Funktion mit gleicher Signatur

    extern "C" __declspec (dllexport) TPluginBasis* get_plugin() {
               // TKonkretesPlugin ist von TPluginBasis abgeleitet
               return new TKonkretesPlugin(); 
       }
    

    welche dir eine Instanz eines konkreten Plugin zurückgibt
    3. Um mehrere Plugins zu laden, freizugeben und zu verwalten kannst du
    dir ja einen Pluginhandler basteln.

    Es gibt auch andere Wege, das hängt davon ab was du eigentlich vor hast.



  • Ich will eigentlich der dll nur einen string übergeben. die dll weiss dann selber was sie damit machen soll. aber dieser string soll allen dlls in dem ordner gegeben werden.

    so hatte ich mir das gedacht. 😉


Anmelden zum Antworten