<?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[Plugin System, DLL&#x27;s laden]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielleicht kann mir hier jemand helfen. Ich möchte eine Applikation erstellen die mehrere Kommunikations DLL's (mit unterschiedlicher API) nutzt.<br />
Dabei soll die Applikation möglichst einfach mit neuen Kommunikations-DLL's(die auch wieder eine andere API haben können) erweitert werden.<br />
Wie geht man am besten an so eine Sache ran?<br />
Wie könnte man diese DLL's in einem PluginSystem verpacken?</p>
<p>givemeaname</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/212720/plugin-system-dll-s-laden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Apr 2026 20:36:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/212720.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 May 2008 15:05:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Fri, 09 May 2008 15:05:29 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielleicht kann mir hier jemand helfen. Ich möchte eine Applikation erstellen die mehrere Kommunikations DLL's (mit unterschiedlicher API) nutzt.<br />
Dabei soll die Applikation möglichst einfach mit neuen Kommunikations-DLL's(die auch wieder eine andere API haben können) erweitert werden.<br />
Wie geht man am besten an so eine Sache ran?<br />
Wie könnte man diese DLL's in einem PluginSystem verpacken?</p>
<p>givemeaname</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506200</guid><dc:creator><![CDATA[givemeaname]]></dc:creator><pubDate>Fri, 09 May 2008 15:05:29 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Fri, 09 May 2008 16:47:05 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Es gibt ein Design Pattern für <a href="http://de.wikipedia.org/wiki/Plugin_%28Entwurfsmuster%29" rel="nofollow">Plugins</a>. Dazu findest du im Forum sicher auch schon weitere Threads.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506229</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 09 May 2008 16:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Fri, 09 May 2008 17:23:45 GMT]]></title><description><![CDATA[<p>givemeaname schrieb:</p>
<blockquote>
<p>Ich möchte eine Applikation erstellen die mehrere Kommunikations DLL's (mit unterschiedlicher API) nutzt.<br />
Dabei soll die Applikation möglichst einfach mit neuen Kommunikations-DLL's(die auch wieder eine andere API haben können) erweitert werden.</p>
</blockquote>
<p>Was verstehst du unter DLLs die unterschiedliche APIs haben können? Irgendwie macht das so keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1506242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506242</guid><dc:creator><![CDATA[Ostbahnhof]]></dc:creator><pubDate>Fri, 09 May 2008 17:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Sat, 10 May 2008 00:45:07 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18320">@givemeaname</a>: Wenn dir nicht klar ist dass es eine Grundvoraussetzung für die Verwendung von Plugins ist, eben eine gemeinsame, immer gleiche API für die Plugins zu haben, dann hast du ein Verständnisproblem, und solltest dieses erstmal beheben.</p>
<p>Falls du meinen solltest dass du verschiedene APIs wie z.B. für Sockets, Named Pipes, Serielle Schnittstellen etc. so kapseln möchtest dass sie für das Programm gleich zu bedienen sind, und für jede dieser unterschiedlichen APIs dann ein &quot;Wrapper-Plugin&quot; schreiben willst ... dann hast du die Lösung ja schon.</p>
<p>Plugins macht man mit Windows DLLs (und C++) IMO am einfachsten imdem man genau eine Funktion mit fixem Namen exportiert, und diese ein neues &quot;Plugin&quot; Objekt zurückgeben lässt (oder auch einen Zeiger auf ein Singleton welches ein bestimmtes Interface implementiert).</p>
<p>z.B. so:</p>
<pre><code class="language-cpp">// plugin_interface.hpp:
class foo;
class bar;
class plugin_interface
{
public:
    virtual foo* create_foo() = 0;
    virtual bar* create_bar(char const* name) = 0;
};

// plugin_a.cpp:
class plugin_a : public plugin_interface
{
// ...
};

static plugin_a s_the_plugin;

// die &quot;eine Funktion mit fixem Namen&quot;:
extern &quot;C&quot; __declspec(dllexport) plugin_interface* get_plugin_interface()
{
    return &amp;s_the_plugin;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1506361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1506361</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 10 May 2008 00:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Tue, 13 May 2008 06:32:08 GMT]]></title><description><![CDATA[<p>vielen Dank für eure Antworten!</p>
<p>@ hustbaer: Ja mir ist klar dass Plugins die gleiche API haben sollten, war vielleicht etwas blöd beschrieben. Was du unter 'Wrapper-Plugin' beschrieben hast, ist genau dass was ich meine. Ich möchte verschiedene Kommunikationsschnittstellen ansprechen (zB.:RS232 RS485 usw...). Dazu stehen mir von diversen Anbietern DLL's zur Verfügung. Leider sind die von der Architektur her nicht einheitlich. Nun wollte ich gern wissen obs noch einen besseren Weg gibt, als jede DLL in ein Plugin zu verpacken.</p>
<p>Im Prinzip ist die &quot;Wrapper-Plugin&quot; Lösung nicht schlecht. Aber was kann ich machen wenn ich zB.: schnittstellenspezifische Funktionen/Parameter aufrufen möchte?<br />
Ich bräuchte dann eine Art dynamisches Plugininterface.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507859</guid><dc:creator><![CDATA[givemeaname]]></dc:creator><pubDate>Tue, 13 May 2008 06:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Tue, 13 May 2008 06:41:35 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-10455.html" rel="nofollow">evilissimo</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-4.html" rel="nofollow">WinAPI</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507866</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Tue, 13 May 2008 06:41:35 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Tue, 13 May 2008 10:20:35 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18320">@givemeaname</a>: dann kannst du dynamic_cast verwenden um zur konkreten Klasse runterzucasten, und diese spezifischen Funktionen einfach ganz normal aufrufen.</p>
<p>Und du *musst* ja auch keine Plugins machen, das hier beschriebene Muster lässt sich ja auch ohne DLLs gut anwenden (=einfach alle Wrapper mit ins Programm reincompilieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1507982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1507982</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 13 May 2008 10:20:35 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Tue, 13 May 2008 15:04:29 GMT]]></title><description><![CDATA[<p>Naja ein PluginSystem wär nicht schlecht, damit man das Hauptprogramm nicht neu compilieren muss. Ich bräuchte ein dynamisches Interface dessen Funktionen/Klassen zur Laufzeit bestimmt werden können.<br />
dynamic_cast würde ja auch nur zur Compile-Zeit gehen oder gibts da noch eine andere Möglichkeit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1508195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1508195</guid><dc:creator><![CDATA[givemeaname]]></dc:creator><pubDate>Tue, 13 May 2008 15:04:29 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Tue, 13 May 2008 15:11:22 GMT]]></title><description><![CDATA[<p>givemeaname schrieb:</p>
<blockquote>
<p>dynamic_cast würde ja auch nur zur Compile-Zeit gehen oder gibts da noch eine andere Möglichkeit?</p>
</blockquote>
<p><a href="https://de.wikipedia.org/wiki/Polymorphie%20(Programmierung)" rel="nofollow">Wikipedia: Polymorphie (Programmierung)</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1508204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1508204</guid><dc:creator><![CDATA[lies dies]]></dc:creator><pubDate>Tue, 13 May 2008 15:11:22 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Tue, 13 May 2008 15:51:10 GMT]]></title><description><![CDATA[<p>givemeaname schrieb:</p>
<blockquote>
<p>Naja ein PluginSystem wär nicht schlecht, damit man das Hauptprogramm nicht neu compilieren muss. Ich bräuchte ein dynamisches Interface dessen Funktionen/Klassen zur Laufzeit bestimmt werden können.<br />
dynamic_cast würde ja auch nur zur Compile-Zeit gehen oder gibts da noch eine andere Möglichkeit?</p>
</blockquote>
<p>Wie/wo/was dynamisch? Willst du denn diese &quot;nicht immer gleichen&quot; Funktionen skripten?</p>
<p>Wenn du sowas willst kannst du evtl. COM und IDispatch verwenden - zumindest bevor du dir selbst ein ähnliches System strickst.</p>
<p>Aber... kannst du vielleicht ein Beispiel geben was dieses &quot;dynamisches Interface dessen Funktionen/Klassen zur Laufzeit bestimmt werden können&quot; können müsste? Also einen Vorgang schildern was da passieren müsste/würde/könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1508247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1508247</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 13 May 2008 15:51:10 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Wed, 14 May 2008 07:17:25 GMT]]></title><description><![CDATA[<p>Also ich hab mal etwas nachgedacht. Vielleicht würde ein statisches Plugin-Interface ausreichen.</p>
<p>Die Idee das ganze zu scripten ist mir auch schon eingefallen, weis aber nicht obs von der Geschwindigkeit her ausreicht.<br />
Mit COM hab ich bisher überhaupt keine Erfahrung, kann also schlecht abschätzen wie komplex die ganze Sache wird.</p>
<p>Mal noch eine anderes Plugin Problem: Wie kann ein Plugin auf Funktionen der Hauptapplikation zugreifen? Also zB.: ich schreibe ein Visualisierungplugin. Wie komm ich dann von dem Plugin an die Daten des Hauptprogramms?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1508574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1508574</guid><dc:creator><![CDATA[givemeaname]]></dc:creator><pubDate>Wed, 14 May 2008 07:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin System, DLL&#x27;s laden on Wed, 14 May 2008 11:22:24 GMT]]></title><description><![CDATA[<p>nennt sich pointer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1508759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1508759</guid><dc:creator><![CDATA[haterskater]]></dc:creator><pubDate>Wed, 14 May 2008 11:22:24 GMT</pubDate></item></channel></rss>