Plugin aus DLL
-
Hallo zusammen!
Ich habe folgendes Problem:
Ich habe ein fertiges Programm in das ich verschiedenste DLL's nach Art eines Plugins integrieren möchte. Wenn das Programm nun aber kompiliert ist und z.B. an jemand anderen weitergegebn ist, wie könnte ich zusätzliche DLL's nachliefern, ohne das Programm mitzuliefern, oder gar den Quelltext neu zu kompielieren.
Ich weiß ja im Vorhinein nicht welche Funktionen die DLL beinhaltet!
Vielleicht hat ja jemand einen Lösungsansatz?
Danke an alle!
-
Ich würd das anders machen. Ich hab sowas auch schonmal realisiert. Ich hab einfach pro plugin !!eine!! DLL mit immer einer gleich benannten Funktion exportiert. Die hab ich dann halt immer aufgerufen. Das is natürlich total billig. Eine weitere Möglichkeit die mir einfällt wäte, dass jede Plugin-DLL eine Funktion beinhalten muss, die zum Beispiel DLLinfo() heißt. Die gibt dann alle in der DLL enthaltene Funktionen zurück.
-
Hmm, die Idee ist ja nicht schlecht!
Würde heißen, ich müsste jedesmal eine Std. Funktion aufrufen, welche mir autom. die Funktionen zurückliefert!
Hat jemand noch einen anderen Lösungsansatz (vielleicht etwas sauberer)??
-
mwoidt hat da schon den richtigen Ansatz. Letztendlich ist es am besten für jeden inhaltlichen oder logischen Programmabschnitt eine Dll zu erstellen, die eine Klasse oder eine Funktions- Schittstelle enthält. Diese Module kannst du dann austauschen, sofern die neuen Module die selben Schnittstellen implementieren.
Flexibler wirds, wenn du ein zusätzliches Steuerungsmodul (dll) erstellst, dass die Koordination der Module (dll- Dateien) übernimmt. So kannst du auch Module hinzufügen indem du ein Sterueungsmodul austauscht und das neue Modul hinzufügst. Ist im Prinzip aber das selbe wie die .exe auszutaschen.
Schau dir mal das Prizip an, welches das Apache- Framework verfolgt (ist ja OpenSource). Der Apache ist auf solche Anbindungen auch hingetrimmt. Es lassen sich cgi- Anwendungen einhacken sowie Dll- Datei als Bestandteil des Webservers einbinden (siehe BCB-Websnap / Webbrocker). Sicherlich wirst du dort strategisch günstige Ansätze finden.
-
Danke für den Tip