<?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[Plug-in System]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Ich bin momentan dabei meinen IRC-Bot von Ruby in C++ neu (um)zu( )schreiben. Der Kern war relativ schnell fertig, und nun bin ich beim Plug-in System angelangt.</p>
<p>In Ruby war das natürlich sehr einfach, da es eine Interpretersprache ist (Dateien werden dynamisch geladen, eine in jedem Plug-in vorhandene, immer gleichnamige &quot;Anmelde&quot;-Funktion wird aufgerufen, welche eine Funktion im &quot;Eventhandler&quot; Registriert und das Bot-Objekt übergeben wird. Sobald neue Daten empfangen werden, werden diese registrierten Funktionen aufgerufen und die Daten als Argument übergeben. Im Plug-in kann dann alles mögliche passieren, und dank Zugriff auf das Bot-Objekt ausgegeben werden.).</p>
<p>Das wird aber leider nicht auf C++ übertragbar sein. Daher meine Frage in der Hoffnung auf ein paar Ideen: Wie kann ich ein ähnliches System in C++ übertragen? Die Plug-ins sollten so individuell wie möglich gestaltbar sein. Das einzige auf was die Plug-ins zugreifen müssen bzw. zur verfügung gestellt bekommen müssen, sind die empfangenen Daten. Und einen Weg eventuelle &quot;Ergebnisse&quot; ausgeben zu können.</p>
<p>Wie ist sowas realisierbar? Über DLLs?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251819/plug-in-system</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 06:06:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251819.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Oct 2009 09:07:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 09:07:38 GMT]]></title><description><![CDATA[<p>Guten Morgen!</p>
<p>Ich bin momentan dabei meinen IRC-Bot von Ruby in C++ neu (um)zu( )schreiben. Der Kern war relativ schnell fertig, und nun bin ich beim Plug-in System angelangt.</p>
<p>In Ruby war das natürlich sehr einfach, da es eine Interpretersprache ist (Dateien werden dynamisch geladen, eine in jedem Plug-in vorhandene, immer gleichnamige &quot;Anmelde&quot;-Funktion wird aufgerufen, welche eine Funktion im &quot;Eventhandler&quot; Registriert und das Bot-Objekt übergeben wird. Sobald neue Daten empfangen werden, werden diese registrierten Funktionen aufgerufen und die Daten als Argument übergeben. Im Plug-in kann dann alles mögliche passieren, und dank Zugriff auf das Bot-Objekt ausgegeben werden.).</p>
<p>Das wird aber leider nicht auf C++ übertragbar sein. Daher meine Frage in der Hoffnung auf ein paar Ideen: Wie kann ich ein ähnliches System in C++ übertragen? Die Plug-ins sollten so individuell wie möglich gestaltbar sein. Das einzige auf was die Plug-ins zugreifen müssen bzw. zur verfügung gestellt bekommen müssen, sind die empfangenen Daten. Und einen Weg eventuelle &quot;Ergebnisse&quot; ausgeben zu können.</p>
<p>Wie ist sowas realisierbar? Über DLLs?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790815</guid><dc:creator><![CDATA[hunto]]></dc:creator><pubDate>Sun, 11 Oct 2009 09:07:38 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 09:27:05 GMT]]></title><description><![CDATA[<p>-Edit: Link zu schlechtem Plugin-Framework entfernt-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790822</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sun, 11 Oct 2009 09:27:05 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 09:34:49 GMT]]></title><description><![CDATA[<p>hunto schrieb:</p>
<blockquote>
<p>Ich bin momentan dabei meinen IRC-Bot von Ruby in C++ neu (um)zu( )schreiben.</p>
</blockquote>
<p>Warum sollte man so etwas tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790828</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 11 Oct 2009 09:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 09:35:57 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>hunto schrieb:</p>
<blockquote>
<p>Ich bin momentan dabei meinen IRC-Bot von Ruby in C++ neu (um)zu( )schreiben.</p>
</blockquote>
<p>Warum sollte man so etwas tun?</p>
</blockquote>
<p>Schneller mehr Spam?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790831</guid><dc:creator><![CDATA[history2.0]]></dc:creator><pubDate>Sun, 11 Oct 2009 09:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 09:50:13 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>hunto schrieb:</p>
<blockquote>
<p>Ich bin momentan dabei meinen IRC-Bot von Ruby in C++ neu (um)zu( )schreiben.</p>
</blockquote>
<p>Warum sollte man so etwas tun?</p>
</blockquote>
<p>Im Grunde erstmal als Übung. Und es ist eine gute Übung für gesuchtes Plug-in System, welches ich dann auch in anderen Projekten verwenden kann.</p>
<p>Keine Ideen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790837</guid><dc:creator><![CDATA[hunto]]></dc:creator><pubDate>Sun, 11 Oct 2009 09:50:13 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 09:54:30 GMT]]></title><description><![CDATA[<p>DLL</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790840</guid><dc:creator><![CDATA[ppp]]></dc:creator><pubDate>Sun, 11 Oct 2009 09:54:30 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 10:13:17 GMT]]></title><description><![CDATA[<p>Es gibt da mehrere Ideen, wie man ein C++-Programm erweiterbar gestalten kann.</p>
<p>1. Man nutzt dynamische Libs (z.B. DLLs), die ein bestimmtes Interface implementieren müssen. Dieses Interface dient als &quot;Kommunikation&quot;, zwischen Programm und Plugin. Mit Kommunikation ist aber nicht unbedingt Nachrichten gemeint, sondern es können einfach Funktions- und Methoden-Aufrufe sein, wo wichtige Daten übergeben und abgefragt werden können. Das kann alles in C oder C++ implementiert werden.</p>
<p>2. Man nutzt eine Script-Engine: <a href="http://www.kharchi.eu/wiki/doku.php?id=cpp:scripting#scriptsprachen" rel="nofollow">http://www.kharchi.eu/wiki/doku.php?id=cpp:scripting#scriptsprachen</a><br />
Hier werden die Plugins aber nicht in C++ implementiert. Aber für kleine Systeme/Aufgaben sicherlich ausreichend.</p>
<p>3. Man nutzt CORBA. <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 Kanonen auf Spatzen geschossen, aber dafür kann man das Plugin sogar auf einem fremden Rechner laufen lassen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>4. Man nutzt IPC <a href="http://www.boost.org/doc/libs/1_40_0/doc/html/interprocess.html" rel="nofollow">http://www.boost.org/doc/libs/1_40_0/doc/html/interprocess.html</a> und erstellt die Plugins als ausführbare Programme (z.B. EXE unter Windows).</p>
<p>5. Wenn man sich auf Windows beschränken will, kann man ActiveX benutzt. ActiveX ist DAS Plugin-System unter Windows! <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="🙂"
    /> Die ATL kann einem dabei das Leben beim Erstellen von ActiveX-Komponenten unheimlich erleichtern.</p>
<p>So... aber am Ende zählt bei ALLEN Konzepten: die Plugins müssen sich an ein Interface halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790843</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 11 Oct 2009 10:13:17 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 10:13:42 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>4. Man nutzt <a href="http://www.boost.org/doc/libs/1_40_0/doc/html/mpi.html" rel="nofollow">http://www.boost.org/doc/libs/1_40_0/doc/html/mpi.html</a> und erstellt die Plugins als ausführbare Programme (z.B. EXE unter Windows).</p>
</blockquote>
<p>Hast Du MPI für solche Zwecke schonmal benutzt? Ich glaube nämlich, dass das gar nicht so läuft. Ich dachte, MPI started <strong>dasselbe</strong> Programm mehrfach, welches dann über die API erfragen kann, welche &quot;Knoten-ID&quot; der Instanz zugeordnet worden ist und wieviele Knoten es gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790845</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 11 Oct 2009 10:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 10:14:10 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Artchi schrieb:</p>
<blockquote>
<p>4. Man nutzt <a href="http://www.boost.org/doc/libs/1_40_0/doc/html/mpi.html" rel="nofollow">http://www.boost.org/doc/libs/1_40_0/doc/html/mpi.html</a> und erstellt die Plugins als ausführbare Programme (z.B. EXE unter Windows).</p>
</blockquote>
<p>Hast Du MPI für solche Zwecke schonmal benutzt? Ich glaube nämlich, dass das gar nicht so läuft. Ich dachte, MPI started <strong>dasselbe</strong> Programm mehrfach, welches dann über die API erfragen kann, welche &quot;Knoten-ID&quot; der Instanz zugeordnet worden ist und wieviele Knoten es gibt.</p>
</blockquote>
<p>Sorry, hab MPI falsch rausgesucht! Meinte IPC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790846</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790846</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 11 Oct 2009 10:14:10 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 12:39:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>zu 1.): Wie weiß das System, welche DLL's sie beim starten laden muss? Unter Windows gibts da eine Möglichkeit, aber das ganze sollte ja auf allen System funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790905</guid><dc:creator><![CDATA[Siassei]]></dc:creator><pubDate>Sun, 11 Oct 2009 12:39:21 GMT</pubDate></item><item><title><![CDATA[Reply to Plug-in System on Sun, 11 Oct 2009 13:23:37 GMT]]></title><description><![CDATA[<p>Siassei schrieb:</p>
<blockquote>
<p>Wie weiß das System, welche DLL's sie beim starten laden muss?</p>
</blockquote>
<p>Zum Beispiel durch eine Konfigurationsdatei, in der die zu ladenden DLLs aufgelistet werden.<br />
Oder man gibt ein Verzeichnis vor, in dem die Plugin-Dateien abgelegt werden müssen und der Pluginmanager lädt alle DLLs, die er dort findet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1790936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1790936</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sun, 11 Oct 2009 13:23:37 GMT</pubDate></item></channel></rss>