<?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[überladene DLL Funktionen dynamisch ansprechen?]]></title><description><![CDATA[<p>Hallo</p>
<p>Wenn ich eine DLL Funktion dynamisch ansprechen will, brauche ich in VC6++ wohl ein .def File in der DLL wo die Funktion bekanntgegeben wird.</p>
<p>z.B.</p>
<pre><code>; DlgPlugin3Dll.def : Declares the module parameters for the DLL.

LIBRARY      &quot;DlgPlugin3Dll&quot;
DESCRIPTION  'DlgPlugin3Dll Windows Dynamic Link Library'

EXPORTS
    ; Explicit exports can go here
[b]TestDLL
ShowDLL[/b]
</code></pre>
<p>mit z.B.</p>
<pre><code>__declspec(dllexport) LONG ShowDLL(CWnd* pParent);
</code></pre>
<p>Offensichtlich sind in den Deklarationen vom def-File nicht die Parameter enthalten, auch im Suchen der Funktion der aufrufenden Instanz ist ja nur der Name, nicht aber die Parameterliste enthalten</p>
<p>z.B.</p>
<pre><code>typedef LONG (*LPSHOWDLG)(CWnd*);	
LPSHOWDLG showfct = (LPSHOWDLG)::GetProcAddress(m_hDll3,&quot;ShowDLL&quot;);
</code></pre>
<p>Wie könnte ich nun eine überladene Funktion aus der DLL exportieren und in der aufrufenden Instanz auch finden (z.B. ShowDLL(void) ? Einfach die Namen durchnummerieren, so wie sie in der DLL hintereinander im Header definiert sind? Oder kann man die Paramter nach einem Schema dem Namen hinzufügen?</p>
<p>Danke<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194067/überladene-dll-funktionen-dynamisch-ansprechen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 30 Jun 2026 05:35:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194067.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 03 Oct 2007 12:58:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to überladene DLL Funktionen dynamisch ansprechen? on Wed, 03 Oct 2007 12:58:50 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wenn ich eine DLL Funktion dynamisch ansprechen will, brauche ich in VC6++ wohl ein .def File in der DLL wo die Funktion bekanntgegeben wird.</p>
<p>z.B.</p>
<pre><code>; DlgPlugin3Dll.def : Declares the module parameters for the DLL.

LIBRARY      &quot;DlgPlugin3Dll&quot;
DESCRIPTION  'DlgPlugin3Dll Windows Dynamic Link Library'

EXPORTS
    ; Explicit exports can go here
[b]TestDLL
ShowDLL[/b]
</code></pre>
<p>mit z.B.</p>
<pre><code>__declspec(dllexport) LONG ShowDLL(CWnd* pParent);
</code></pre>
<p>Offensichtlich sind in den Deklarationen vom def-File nicht die Parameter enthalten, auch im Suchen der Funktion der aufrufenden Instanz ist ja nur der Name, nicht aber die Parameterliste enthalten</p>
<p>z.B.</p>
<pre><code>typedef LONG (*LPSHOWDLG)(CWnd*);	
LPSHOWDLG showfct = (LPSHOWDLG)::GetProcAddress(m_hDll3,&quot;ShowDLL&quot;);
</code></pre>
<p>Wie könnte ich nun eine überladene Funktion aus der DLL exportieren und in der aufrufenden Instanz auch finden (z.B. ShowDLL(void) ? Einfach die Namen durchnummerieren, so wie sie in der DLL hintereinander im Header definiert sind? Oder kann man die Paramter nach einem Schema dem Namen hinzufügen?</p>
<p>Danke<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377110</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377110</guid><dc:creator><![CDATA[Stefan_L_01]]></dc:creator><pubDate>Wed, 03 Oct 2007 12:58:50 GMT</pubDate></item><item><title><![CDATA[Reply to überladene DLL Funktionen dynamisch ansprechen? on Wed, 03 Oct 2007 13:12:32 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-403.html" rel="nofollow">HumeSikkins</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/1377117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377117</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Wed, 03 Oct 2007 13:12:32 GMT</pubDate></item><item><title><![CDATA[Reply to überladene DLL Funktionen dynamisch ansprechen? on Wed, 03 Oct 2007 15:13:16 GMT]]></title><description><![CDATA[<p>Ein DEF-File brauchst Du nur, wenn der Name der Funktion etwas &quot;schöner&quot; sein soll...</p>
<p>PS: Es gibt keine &quot;Überladene&quot; Funktionen.... oder meinst Du welche mit unterschiedlichen Parametern?<br />
Gib ihr einen anderen Namen!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1377161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1377161</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Wed, 03 Oct 2007 15:13:16 GMT</pubDate></item><item><title><![CDATA[Reply to überladene DLL Funktionen dynamisch ansprechen? on Thu, 04 Oct 2007 17:20:38 GMT]]></title><description><![CDATA[<p>Das kann jetzt Entwicklungsumgebungsabhängig sein, aber in VC++ 6 habe ich tatsächlich nur eine Funktion per GetProcAdress finden können, wenn ein .def File in der DLL dabei war. Ansonsten war der Pointer auf die Funktion bzw. der return Wert gleich 0.</p>
<p>Und ja, es geht um unterschiedliche Parameter bei gleichem Funktionsnamen. Das man jede Funktion individuell benennen könnte wäre natürlich der logische Workaround falls die Antwort auf meine Frage &quot;geht nicht&quot; wäre :))</p>
<p>Ach ja, ich arbeite platformspezifisch, de facto nur VC++. Darf also ruhig speziell sein</p>
<p>Gruß<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378061</guid><dc:creator><![CDATA[Stefan_L_01]]></dc:creator><pubDate>Thu, 04 Oct 2007 17:20:38 GMT</pubDate></item><item><title><![CDATA[Reply to überladene DLL Funktionen dynamisch ansprechen? on Thu, 04 Oct 2007 18:47:22 GMT]]></title><description><![CDATA[<p>Eine DLL kann AFAIK nicht 2 (oder mehr) Exporte mit dem gleichen Namen haben. Und selbst WENN könnte man sie nichtmehr namentlich mit GetProcAddress ansprechen.</p>
<p>Die Namen sind aber eigentlich vollkommen egal sobald man GetProcAddress verwendet -- ist doch ziemlich wurscht was für einen String man da übergibt, und ob das 3x der gleiche String für 3 Funktionen (mit unterschiedlichen Parametern) ist oder 3 unterschiedliche.</p>
<p>Ich mache es normal einfach immer so dass ich eine Funktion exportiere welche einen Zeiger auf eine abstrakte C++ Klasse (&quot;Interface&quot;) zurückliefert. Im einfachsten Fall sieht das so aus:</p>
<pre><code class="language-cpp">// .hpp:

class Foo
{
public:
    virtual void Blubb() = 0;
    virtual void Blubb(int a) = 0;
    virtual int Blubb(std::string const&amp; a) = 0;
    // ...
};

// .cpp:

class FooImpl : public Foo
{
    // ...
};

extern &quot;C&quot; __declspec(dllexport) Foo* GetFoo()
{
    static FooImpl f;
    return &amp;f;
}
</code></pre>
<p>Dann holst du dir einfach nurmehr einen Zeiger auf GetFoo, der Rest geht über das &quot;Interface&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1378135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1378135</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Oct 2007 18:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to überladene DLL Funktionen dynamisch ansprechen? on Sat, 06 Oct 2007 10:43:27 GMT]]></title><description><![CDATA[<p>Und wie ist die Reihenfolge der Strings im .def File definiert relativ zu der Definition in Interfacedateien? Insbesonders wenn Funktionen in verschiedenen Interface-Dateien definiert sein sollten (unschön, ich weiß, aber jetzt rein prinzipiell gesehen).</p>
<p>Gruß<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379062</guid><dc:creator><![CDATA[Stefan_L_01]]></dc:creator><pubDate>Sat, 06 Oct 2007 10:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to überladene DLL Funktionen dynamisch ansprechen? on Sat, 06 Oct 2007 12:52:48 GMT]]></title><description><![CDATA[<p>Stefan_L_01 schrieb:</p>
<blockquote>
<p>Und wie ist die Reihenfolge der Strings im .def File definiert relativ zu der Definition in Interfacedateien? Insbesonders wenn Funktionen in verschiedenen Interface-Dateien definiert sein sollten (unschön, ich weiß, aber jetzt rein prinzipiell gesehen).</p>
</blockquote>
<p>Ich verstehe den 1. Satz nicht.<br />
Was für Reihenfolge von irgendwas?<br />
Du brauchst garkein .def File.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1379121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1379121</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 06 Oct 2007 12:52:48 GMT</pubDate></item></channel></rss>