<?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[muss man dll entladen ?]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe mir eine statische lib geschrieben,<br />
die meine andere dynamische dll lädt,<br />
damit ich nur das schreiben brauche</p>
<pre><code>#pragma comment(lib, &quot;mydll.lib&quot;)
void* p = LoadDLL();  // &lt;-- LoadDLL ist funktion aus der lib
</code></pre>
<p>LoadDLL lädt meine dynamische dll und gibt mir einen zeiger auf die dll funktion, damit ich dann mit der dll arbeiten kann,</p>
<p>die frage ist, muss ich meine dynamische dll am ende im programm entladen mit FreeLibrary() ? oder geschiet das automatisch bei windows XP ?</p>
<p>wenn ich das machen muss, wie könnte ich das am besten machen... ?<br />
mein ansatz:<br />
ich könnte in die statische lib noch eine funktion UnloadDLL() machen, die intern FreeLibrary() aufruft und andere sachen erledigt,<br />
aber die erfodert hinstance auf die geladene dll, die bei mir in der funktion LoadDLL privat drin ist, wie könnte ich das in der UnlaodDLL dann aufrufen ? über parameter will ich das nicht übergeben, da ich auf die hinstance von aussen nicht zugreifen kann,</p>
<p>mfg</p>
<p>EDIT: code umgeändert</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/111702/muss-man-dll-entladen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 01 Jul 2026 04:33:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/111702.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Jun 2005 00:39:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to muss man dll entladen ? on Sat, 04 Jun 2005 12:18:43 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>ich habe mir eine statische lib geschrieben,<br />
die meine andere dynamische dll lädt,<br />
damit ich nur das schreiben brauche</p>
<pre><code>#pragma comment(lib, &quot;mydll.lib&quot;)
void* p = LoadDLL();  // &lt;-- LoadDLL ist funktion aus der lib
</code></pre>
<p>LoadDLL lädt meine dynamische dll und gibt mir einen zeiger auf die dll funktion, damit ich dann mit der dll arbeiten kann,</p>
<p>die frage ist, muss ich meine dynamische dll am ende im programm entladen mit FreeLibrary() ? oder geschiet das automatisch bei windows XP ?</p>
<p>wenn ich das machen muss, wie könnte ich das am besten machen... ?<br />
mein ansatz:<br />
ich könnte in die statische lib noch eine funktion UnloadDLL() machen, die intern FreeLibrary() aufruft und andere sachen erledigt,<br />
aber die erfodert hinstance auf die geladene dll, die bei mir in der funktion LoadDLL privat drin ist, wie könnte ich das in der UnlaodDLL dann aufrufen ? über parameter will ich das nicht übergeben, da ich auf die hinstance von aussen nicht zugreifen kann,</p>
<p>mfg</p>
<p>EDIT: code umgeändert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/801969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/801969</guid><dc:creator><![CDATA[WeiseCoder]]></dc:creator><pubDate>Sat, 04 Jun 2005 12:18:43 GMT</pubDate></item><item><title><![CDATA[Reply to muss man dll entladen ? on Sat, 04 Jun 2005 05:22:56 GMT]]></title><description><![CDATA[<blockquote>
<pre><code>#pragma comment(lib, &quot;mydll.dll&quot;)
</code></pre>
</blockquote>
<p>Ist das nicht für statische Bibliotheken, also .lib-Files gedaht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/801973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/801973</guid><dc:creator><![CDATA[flenders]]></dc:creator><pubDate>Sat, 04 Jun 2005 05:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to muss man dll entladen ? on Sat, 04 Jun 2005 13:18:39 GMT]]></title><description><![CDATA[<p>Hi !!</p>
<p>Ich versteh nicht warum du über Paris von München nach Rom fährst ??</p>
<pre><code>#pragma comment (lib, &quot;mydll.dll&quot;)
</code></pre>
<p>Ist eigentlich nicht gültig, soviel ich weiss....</p>
<p>Wenn du eine DLL schreibst, wird eine ExportBibliothek angelegt, wenn du deine<br />
Funktionen exportierst. (sonst sind sie ja nicht nutzbar).<br />
Wenn du also deine &quot;Client-Andwendung&quot; schreibst, werden die Symbole mit Hilfe dieser Lib befriedigt und die DLL beim start der Anwendung automatisch gesucht und geladen. Beim beenden (oder später) wird diese dann automatisch entladen.<br />
Falls du die Adressen der DLL mit GetProcAdress manuell lädst, dann solltest du<br />
Sie mit FreeLibary() tatsächlich wieder freigeben. Allerdings bevorzuge ich die erste Version, ausser es handelt sich um eine Plugin DLL oder sowas in die Richtung.<br />
rya.<br />
Scorcher24</p>
<p>p.s.:</p>
<p>Zum epxortieren von Funktionen kannst Du dieses nette Macro im Header anlegen. (Muss beim Client eingebunden werden:</p>
<pre><code>#if defined (DLL_EXPORTS)
#define EXPORT __declspec dllexport
#else
#define EXPORT __declspec dllimport
#endif
</code></pre>
<p>Das stellt sicher, dass beim einbinden der Header die Funktion oder Klasse importiert, beim kompilieren exportiert wird.<br />
Natürlich musst du die Funktionen (Klassen) dementsprechen markieren (und DLLEXPORTS im DLL-Projekt definieren)</p>
<pre><code>EXPORT void Foo( int a, int b );
class EXPORT bar
{
public:
  bar();
  ~bar();
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/802146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/802146</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Sat, 04 Jun 2005 13:18:39 GMT</pubDate></item></channel></rss>