<?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 in C++(C)]]></title><description><![CDATA[<p>Gibt es einen weg, wie man dlls direkt in C++ erstellt (ohne extern&quot;C&quot; im header) beziehungweise wie kann Ich komplexe C++ Objekte von Programm in die dll und zurück geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/272518/dll-in-c-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 21:18:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/272518.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Aug 2010 21:56:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dll in C++(C) on Wed, 18 Aug 2010 21:56:42 GMT]]></title><description><![CDATA[<p>Gibt es einen weg, wie man dlls direkt in C++ erstellt (ohne extern&quot;C&quot; im header) beziehungweise wie kann Ich komplexe C++ Objekte von Programm in die dll und zurück geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941782</guid><dc:creator><![CDATA[dll]]></dc:creator><pubDate>Wed, 18 Aug 2010 21:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to dll in C++(C) on Wed, 18 Aug 2010 22:09:46 GMT]]></title><description><![CDATA[<p>Da gib es keinen Unterschied zwischen C und C++. Import und Export funktioniert für Klassen analog zu Funktionen:</p>
<pre><code class="language-cpp">class __declspec(dllexport) Klassenname
{
  ...
</code></pre>
<p>und entsprechend dllimport auf der &quot;Verbraucherseite&quot;.</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941788</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 18 Aug 2010 22:09:46 GMT</pubDate></item><item><title><![CDATA[Reply to dll in C++(C) on Thu, 19 Aug 2010 07:00:38 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>und entsprechend dllimport auf der &quot;Verbraucherseite&quot;</p>
</blockquote>
<p>Das habe ich noch nie gehört... Ist das wirklich notwendig?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941831</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 19 Aug 2010 07:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to dll in C++(C) on Thu, 19 Aug 2010 07:08:08 GMT]]></title><description><![CDATA[<p>Kommt drauf an. Wenn die DLLs per C-Schnittstelle aufgerufen werden sollen, wird extern &quot;C&quot; benötigt, damit der Compiler das Name-Mangling richtig macht, die Symbole werden dann wie C-Funktionen in die DLL compiliert und aus den anderen Programmteilen auch so aufgerufen.</p>
<p>DLLs mit C++-Schnittstelle sind Plattform- und Compilerspezifisch, bei MSVC wird dazu die Funktion oder auch Klasse mittels __declspec(dllexport) in der DLL compiliert und mittels __declspec(dllimport) in der aufrufenden ÜE deklariert.</p>
<p>Pro C-schnittstelle/contra C++-schnittstelle: Plauttformunabhängigkeit, Compilerunabhängigkeit, Sprachunabhängigkeit (DLLs mit C-Schnittstelle können auch aus anderen Sprachen aufgerufen werden, z.B. C, Delphi, ...)<br />
Contra C-Schnittstelle/pro C++-Schnittstelle: Es können Klassen und überladene Funktionen exportiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941838</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 19 Aug 2010 07:08:08 GMT</pubDate></item><item><title><![CDATA[Reply to dll in C++(C) on Thu, 19 Aug 2010 07:25:06 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Kommt drauf an. Wenn die DLLs per C-Schnittstelle aufgerufen werden sollen, wird extern &quot;C&quot; benötigt, damit der Compiler das Name-Mangling richtig macht, die Symbole werden dann wie C-Funktionen in die DLL compiliert und aus den anderen Programmteilen auch so aufgerufen.</p>
<p>DLLs mit C++-Schnittstelle sind Plattform- und Compilerspezifisch, bei MSVC wird dazu die Funktion oder auch Klasse mittels __declspec(dllexport) in der DLL compiliert und mittels __declspec(dllimport) in der aufrufenden ÜE deklariert.</p>
<p>Pro C-schnittstelle/contra C++-schnittstelle: Plauttformunabhängigkeit, Compilerunabhängigkeit, Sprachunabhängigkeit (DLLs mit C-Schnittstelle können auch aus anderen Sprachen aufgerufen werden, z.B. C, Delphi, ...)<br />
Contra C-Schnittstelle/pro C++-Schnittstelle: Es können Klassen und überladene Funktionen exportiert werden.</p>
</blockquote>
<p>Naja, richtig plattformunabhängig ist auch eine C-Dll nicht. Eine mit MSVC für Windows 7 gebaute Dll mit C-Schnittstelle wird man weder unter Linux noch unter Windows 95 benutzen können.</p>
<p>Auch mit C-Schnittstellen kann man C++-Klassen exportieren, jedoch muss man hierbei den Umweg über Interface-Klassen gehen.</p>
<p>Richtig praktisch sind C-Dlls vor allem dann, wenn man sie zur Laufzeit laden will (z.B. mittels LoadLibrary). Das ist zum Beispiel sinnvoll, wenn man eine Pluginarchitektur aufgebaut hat, oder wenn eine Dll nicht unbedingt erforderlich ist. Dabei sind die dekorierten Namen von C++ nämlich äußerst störend, da man diese erst irgendwie herausbekommen muss. Bei einem C-Interface hingegen kann man direkt die angegebenen Namen benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941843</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 19 Aug 2010 07:25:06 GMT</pubDate></item><item><title><![CDATA[Reply to dll in C++(C) on Thu, 19 Aug 2010 08:23:18 GMT]]></title><description><![CDATA[<p>daersc schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>und entsprechend dllimport auf der &quot;Verbraucherseite&quot;</p>
</blockquote>
<p>Das habe ich noch nie gehört... Ist das wirklich notwendig?</p>
</blockquote>
<p>Es geht wohl auch so, Microsoft schlägt es dennoch vor. Da man aber eigentlich sowieso immer mit einem Macro arbeitet (schließlich muss ja das export weg), kann man dann auch das dllimport benutzen.</p>
<p>Lars</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1941883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1941883</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 19 Aug 2010 08:23:18 GMT</pubDate></item></channel></rss>