<?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 Schnittstelle]]></title><description><![CDATA[<p>Hallo,<br />
ich würde gerne eine wirklich brauchbare Plugin-Schnitstelle basteln um mein Programm einfacher erweitern zu können...<br />
Hat jemand diesbezüglich Erfahrung und kann mir ein paar Links geben um das zu bewerkstelligen?<br />
Mich würd's auch freuen, wenn mir jemand diesbezüglich ein paar Design-Tipps gibt damit das ganze den größtmöglichen nutzen hat.</p>
<p>Ich hab schon so eine Plugin-Schnitstelle gebastelt allerdings finde ich diese reichlich unpraktisch.</p>
<p>Gruß Patrick</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143855/plugin-schnittstelle</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 10:53:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143855.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Apr 2006 12:31:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Plugin Schnittstelle on Wed, 12 Apr 2006 12:31:48 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich würde gerne eine wirklich brauchbare Plugin-Schnitstelle basteln um mein Programm einfacher erweitern zu können...<br />
Hat jemand diesbezüglich Erfahrung und kann mir ein paar Links geben um das zu bewerkstelligen?<br />
Mich würd's auch freuen, wenn mir jemand diesbezüglich ein paar Design-Tipps gibt damit das ganze den größtmöglichen nutzen hat.</p>
<p>Ich hab schon so eine Plugin-Schnitstelle gebastelt allerdings finde ich diese reichlich unpraktisch.</p>
<p>Gruß Patrick</p>
<p>Danke im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035896</guid><dc:creator><![CDATA[Dummie]]></dc:creator><pubDate>Wed, 12 Apr 2006 12:31:48 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin Schnittstelle on Wed, 12 Apr 2006 13:30:45 GMT]]></title><description><![CDATA[<p>forensuche mit &lt; *plugin* &gt; und du wirst einiges finden.<br />
auf <a href="http://flipcode.com" rel="nofollow">flipcode.com</a> war auch ein gutes tutorial, finde es aber gerade nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035979</guid><dc:creator><![CDATA[miller_m]]></dc:creator><pubDate>Wed, 12 Apr 2006 13:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to Plugin Schnittstelle on Wed, 12 Apr 2006 13:59:34 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Antwort <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="🙂"
    /></p>
<p>Ich hab auch im Forum rumgesucht nur hat mir das alles nicht wirklich weitergeholfen...</p>
<p>Ich hab mal nen bisschen gegoogelt und das gefunden:<br />
<a href="http://www.flipcode.com/articles/article_winplugins.shtml" rel="nofollow">http://www.flipcode.com/articles/article_winplugins.shtml</a></p>
<p>Ist es das was du meintest?</p>
<p>Hier mal der Code für das PluginSystem was ich gebastelt hattee:</p>
<pre><code class="language-cpp">//PluginSystem.h
#ifndef PLUGIN_SYSTEM_H
#define PLUGIN_SYSTEM_H

#include &lt;vector&gt;
#include &lt;windows.h&gt;
#include &quot;PluginInterface.h&quot;
#include &quot;PluginException.h&quot;

typedef PluginInterface*(*GetPlugin)( void );

struct PluginHolder;

typedef std::vector&lt;PluginHolder&gt;			PluginVec;
typedef std::vector&lt;PluginHolder&gt;::iterator PluginVecIt;

struct PluginHolder
{
	HINSTANCE LibPort;
	GetPlugin pPlugin;
};

class PluginSystem
{
private:
	PluginVec m_Plugins;
public:
	PluginSystem();
	~PluginSystem();
	PluginInterface *GetPluginClass( GetPlugin pPlugin ) { return (*pPlugin)(); }
};

#endif

//PluginSystem.cpp
#include &lt;fstream&gt;
#include &quot;PluginSystem.h&quot;

PluginSystem::PluginSystem()
{
	std::string ReadBuffer;
	PluginHolder Temp;
	std::ifstream PluginFile( &quot;Plugins.cfg&quot; );
	if (PluginFile.good())
	{
		while (PluginFile.good())
		{
			std::getline( PluginFile, ReadBuffer, '\n' );
			Temp.LibPort = LoadLibrary( ReadBuffer.c_str() );
			if ( Temp.LibPort != NULL )
			{
				Temp.pPlugin = (GetPlugin) GetProcAddress( Temp.LibPort , &quot;GetPlugin&quot; );
				if (Temp.pPlugin)
				{
					(*Temp.pPlugin)()-&gt;PluginLoad();
					m_Plugins.push_back( Temp );
				}
				else
				{
					PluginError(&quot;Plugin '&quot; + ReadBuffer+ &quot;' ist ungueltig!&quot;);
				}
			}
			else
			{
				PluginError(&quot;Konnte Datei '&quot; + ReadBuffer+ &quot;' nicht laden!&quot;);
			}
		}
	}
	else
	{
		PluginError(&quot;Konnte Datei 'Plugins.cfg' nicht laden!&quot;);
	}

}

PluginSystem::~PluginSystem()
{
	for(PluginVecIt Plugins = m_Plugins.begin(); Plugins != m_Plugins.end(); Plugins++)
	{
		GetPluginClass( Plugins-&gt;pPlugin )-&gt;PluginUnLoad();
		FreeLibrary( Plugins-&gt;LibPort );
	}
}

//PluginInterface.h
#ifndef PLUGIN_INTERFACE_H
#define PLUGIN_INTERFACE_H

#include &quot;PluginException.h&quot;

class PluginInterface
{
public:
	virtual PluginUnLoad() = 0;
	virtual PluginLoad() = 0;
};

#endif
</code></pre>
<p>Ich persönlich finde meins nicht so toll ich finde es sieht irgendwie unvollständig aus... Was haltet ihr davon?</p>
<p>Danke</p>
<p>Gruß Patrick</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1036010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1036010</guid><dc:creator><![CDATA[Dummie]]></dc:creator><pubDate>Wed, 12 Apr 2006 13:59:34 GMT</pubDate></item></channel></rss>