<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Pluginsystem Plattfiorumunabhängig?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Was gibt es für Möglichkeiten, ein Pluginsystem zu designen, welches Plattform unabhängig funktioniert? Unter windows alleine geht das ja gut mit LoadLibrary etc.<br />
Ich kenn mich zB mit linux kaum aus, weiß nur, da gibts anstat dll .so<br />
aber wie man die lädt usw. kA. und von Mac weiß ich gar nichts.</p>
<p>Also, gibts vielleicht schon vorgefertige libs, die sozusagen die Funktionen aus plugindateien (dll, so, mac-äquivalent) ziehen und ale funkitonspointer zurück geben oder so? Oder wie macht man das sonst mit plugins unter verschiedenen plattformne?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/162862/pluginsystem-plattfiorumunabhängig</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 07:12:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/162862.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Oct 2006 19:54:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Mon, 23 Oct 2006 19:54:08 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Was gibt es für Möglichkeiten, ein Pluginsystem zu designen, welches Plattform unabhängig funktioniert? Unter windows alleine geht das ja gut mit LoadLibrary etc.<br />
Ich kenn mich zB mit linux kaum aus, weiß nur, da gibts anstat dll .so<br />
aber wie man die lädt usw. kA. und von Mac weiß ich gar nichts.</p>
<p>Also, gibts vielleicht schon vorgefertige libs, die sozusagen die Funktionen aus plugindateien (dll, so, mac-äquivalent) ziehen und ale funkitonspointer zurück geben oder so? Oder wie macht man das sonst mit plugins unter verschiedenen plattformne?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159919</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Mon, 23 Oct 2006 19:54:08 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Mon, 23 Oct 2006 20:14:41 GMT]]></title><description><![CDATA[<p>da hast du trauer. Einzige Möglichkeit wäre nen Scriptinterpreter.<br />
Beispielsweise lua oder python.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159933</guid><dc:creator><![CDATA[DocJunioR]]></dc:creator><pubDate>Mon, 23 Oct 2006 20:14:41 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Mon, 23 Oct 2006 20:16:18 GMT]]></title><description><![CDATA[<p>Oder komm auf die gute seine der Macht: Java!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159936</guid><dc:creator><![CDATA[DeinVaterErIst]]></dc:creator><pubDate>Mon, 23 Oct 2006 20:16:18 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Mon, 23 Oct 2006 20:40:51 GMT]]></title><description><![CDATA[<p>Stichwort dlopen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1159946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1159946</guid><dc:creator><![CDATA[Bächar]]></dc:creator><pubDate>Mon, 23 Oct 2006 20:40:51 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Tue, 24 Oct 2006 11:59:31 GMT]]></title><description><![CDATA[<p>Das ist recht schnell selbst implementiert. Unter Unix/Linux/OSX gibt es [man: dlopen(2}](<a href="http://man.cx/dlopen(2%7D)" rel="nofollow">http://man.cx/dlopen(2})</a> dafür.</p>
<p>Ich habe mal so was geschrieben. Wenn ich es finde, kann ich es hier posten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160267</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Tue, 24 Oct 2006 11:59:31 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Tue, 24 Oct 2006 12:18:19 GMT]]></title><description><![CDATA[<p>Hem, dynamische Libs als Plugins ist eine Möglichkeit. Es gibt ja auch andere, z.B. Konzepte wie es COM und ActiveX machen (ich meine nur die Konzepte!). Du könntest Corba verwenden, damit ein Plugin mit einem Programm reden kann (ist das, was COM/ActiveX machen). Oder Sharedmemory (shmem von boost) könnte auch eine Lösung sein. Das sind alles Konzepte die sich von Fall zu Fall eignen.</p>
<p>Eine kostenlose Corba-Implementierung: <a href="http://www.mico.org/" rel="nofollow">http://www.mico.org/</a></p>
<p>Wenn du Plugins haben willst, die mehr oder weniger simpel sind, könntest du einfach Python oder Lua anbinden. Die beiden haben auch wieder ihre Vor-/Nachteile. Python ist z.B. objektorientiert und boost bietet sogar eine Unterstützung an, mit der Du deine Programme mit Python erweitern lassen kannst. Python ist aber relativ langsam.<br />
Lua ist dagegen sauschnell (als Scriptsprache) und hat ne eigene VM, die du in deine C/C++-Programme einbetten kannst. Ist aber wiederrum nicht objektorientiert.</p>
<p>Es gibt also sehr viele Lösungswege um ein Plugin-System zu realiesieren. Bei allen Lösungen mußt du aber immer etwas Hand anlegen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160275</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 24 Oct 2006 12:18:19 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Tue, 24 Oct 2006 15:15:23 GMT]]></title><description><![CDATA[<p>hm... also mit corba kenn ich mich nich aus, auch kaum mit com, also eigentlich auch nich. sah auf den ersten Blick auch ziemlich kompliziert aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> naja, werd mich da vielleicht mal mit befassen.</p>
<p>es geht um folgendes. Ich habe ein programm, welches Daten aus Datenbanken auf eine bestimmte weise visualisieren soll. klappt auch ganz gut. allerdings liegen die daten in den datenbanken in verschiedenen formaten vor. also muss man sozusagen einen vermitler haben, welcher daten aus den datenbanken aufbereitet, damit sie angezeigt werden können, denn das Programm weiß zB nich, wie die tabellennamen sind, die die felder heißen usw. Deshalb dachte ich an ein Pluginsystem, mit dem man dann schnell die datenbanken welchseln kann, ohne alles neu zu machen.</p>
<p>Könnte sein, dass ich das ganze mit Lua hinbekomme. oder Python (interessiert micih sowieso schon immer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ). Oder ich versuchs mit LoadLibrary, dlopen. wie ist das pendant zum mac von dlopen?</p>
<p>das ganze schient jedenfalls sehr spannend zu werden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Danke für eure Antworten <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Maxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160430</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160430</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Tue, 24 Oct 2006 15:15:23 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Tue, 24 Oct 2006 15:25:58 GMT]]></title><description><![CDATA[<p>Du brauchst kein Python, Lua, COM, Corba oder sonst was.</p>
<p>Du erstellst einfach eine shared library (&quot;so&quot; in linux, &quot;dll&quot; in windows,...) und abstrahierst das Laden etwas. So wahnsinnig unterschiedlich ist das nicht: LoadLibrary &amp; Co versus dlopen &amp; Co.</p>
<p>Doof wirds nur wenn du mehr exporten willst als nur rohe Funktionen: zB Objekte. Dann wird es haesslich und du brauchst entweder immer den selben Compiler oder du musst eben serialisieren/deserialisieren.</p>
<p>Also: solange du nur C code exporten willst, ists kein Thema.</p>
<p>Du musst natuerlich jedes plugin fuer jede plattform kompilieren - aber das sollte ja klar sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160436</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 24 Oct 2006 15:25:58 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Tue, 24 Oct 2006 15:48:32 GMT]]></title><description><![CDATA[<p>naja...<br />
also wenn ich den code shcon in c++ schreiben kann, dann will ich auch mit klassen und pipapo. ich wollte mir dann eine abstrakte Klasse</p>
<p>cDataLoader schreiben, die das Interface bereitstellt, und im Plugin liegt die Implementierung drin. Aber eigentilch... hab da grad ne Idee. Geht sowas?</p>
<pre><code class="language-cpp">// hauptprogramm
class Loader()
{
Loader();
bool Load() = 0;
};

Loader* (func)(); // oder so ähnliche syntax für funcionpointer func :)
func = dlsym(&quot;GetLoader&quot;, ...);

// Objekt aus Dll/so holen.
Loader* loader = func();

// plugin:
class DB1Loader : public Loader
{
bool Load() { return true; };
};

extern &quot;C&quot;
{
Loader* GetLoader() { return new DB1Loader; };
}
</code></pre>
<p>also dass ich das interface für alle pölugins gleich mache (is ja eh klar)<br />
und dann nur die eine funktion in der dynlib extern-c mache und über diese funktion an ein objekt des richtige lodaers komme. funktioniert dann die polymorphie noch, auch wenn die klasse in anderem speicher liegt?<br />
Dass mit gleichem compiler gearbeitet wurde, setz ich mal voraus...<br />
Maxi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160458</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Tue, 24 Oct 2006 15:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Tue, 24 Oct 2006 16:28:48 GMT]]></title><description><![CDATA[<p>Das geht nicht gut, weil das Objekt Model von C++ nicht fest definiert ist. Einzelne Compiler haben da Unterschiede. Also wenn du nicht alle Plugins mit dem selben Compiler erstellen willst, musst du n anderes System verwenden als du jetzt vor hast.</p>
<p>Ansonsten funktioniert dein Ansatz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160492</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 24 Oct 2006 16:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to Pluginsystem Plattfiorumunabhängig? on Tue, 24 Oct 2006 17:08:08 GMT]]></title><description><![CDATA[<p>hm... also habs ausprobiert, unter windows funktioniert das jednfalls <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> mit vc express...</p>
<p>naja... ich denk ich mach es erstmal so, ich seh ja auch nich, dass jemand anderes dafür plugins schreiben wird (ok, das is eig der sinn von plugins <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ), und wenn dann muss er eben auch vc2005 nehmen oder eben gcc unter linux dann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1160546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1160546</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Tue, 24 Oct 2006 17:08:08 GMT</pubDate></item></channel></rss>