<?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[DLL dynamisch einbinden, Probleme mit Funktionsnamen]]></title><description><![CDATA[<p>Servus</p>
<p>ich habe eine DLL geschrieben die ich dynamisch in mein Projekt einbinden möchte<br />
Die Adresse einer Funktion aus der DLL bekomme ich durch</p>
<pre><code>p_JWFLIN_SendMessage  = ( LPFNDLLLIN_1) 
GetProcAddress(LinDllDynPara.hDLL, &quot;JWFLIN_SendMessage&quot;)
</code></pre>
<p>allerdings wird die Funktion in der DLL erst mit folgendem Funktionsnamen gefunden, <strong>?JWFLIN_GetMessage@@YAHPAD@Z</strong></p>
<p>diesen habe ich gefunden, durch das öffnen der DLL mit einem Textexitor.</p>
<p>Nun habe ich aber auch DLL bei denen ich deren Funktionen über den tatsächlichen Namen einbinden kann. Warum wird der Funktionsname beim erstellen der DLL geändert und welche Einstellungen muss ich beim compilen ändern, damit ich das Problem nicht mehr habe....</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/147339/dll-dynamisch-einbinden-probleme-mit-funktionsnamen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 03:51:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147339.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 May 2006 06:51:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DLL dynamisch einbinden, Probleme mit Funktionsnamen on Tue, 16 May 2006 06:57:52 GMT]]></title><description><![CDATA[<p>Servus</p>
<p>ich habe eine DLL geschrieben die ich dynamisch in mein Projekt einbinden möchte<br />
Die Adresse einer Funktion aus der DLL bekomme ich durch</p>
<pre><code>p_JWFLIN_SendMessage  = ( LPFNDLLLIN_1) 
GetProcAddress(LinDllDynPara.hDLL, &quot;JWFLIN_SendMessage&quot;)
</code></pre>
<p>allerdings wird die Funktion in der DLL erst mit folgendem Funktionsnamen gefunden, <strong>?JWFLIN_GetMessage@@YAHPAD@Z</strong></p>
<p>diesen habe ich gefunden, durch das öffnen der DLL mit einem Textexitor.</p>
<p>Nun habe ich aber auch DLL bei denen ich deren Funktionen über den tatsächlichen Namen einbinden kann. Warum wird der Funktionsname beim erstellen der DLL geändert und welche Einstellungen muss ich beim compilen ändern, damit ich das Problem nicht mehr habe....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1058586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058586</guid><dc:creator><![CDATA[MountainMonkey]]></dc:creator><pubDate>Tue, 16 May 2006 06:57:52 GMT</pubDate></item><item><title><![CDATA[Reply to DLL dynamisch einbinden, Probleme mit Funktionsnamen on Tue, 16 May 2006 06:58:59 GMT]]></title><description><![CDATA[<p>Stichwort: Name Mangling</p>
<p>In C++ gibt es Überladungen, das heißt der Name &quot;JWFLIN_SendMessage&quot; könnte mehrdeutig sein (der Compiler kann noch anhand der Parametertypen entscheiden, welche Version richtig ist, der Linker sieht &quot;nur&quot; die Namen), deshalb werden in den Namen noch die Parametertypen der Funktion (und einige weitere Informationen) reincodiert.</p>
<p>Um das zu verhindern, mußt du die Funktion auf C-Bindung umstellen (da gibt es keine Überladung mehr, im Gegenzug werden Namen 1:1 übernommen):</p>
<pre><code class="language-cpp">//einzelne Funktion:
extern &quot;C&quot; void func(int);

//mehrere Funktionen:
extern &quot;C&quot; {
  void func1(int);
  int func2(int, double);
  ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1058591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1058591</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 16 May 2006 06:58:59 GMT</pubDate></item></channel></rss>