<?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[Templates richtig in dlls exportieren]]></title><description><![CDATA[<p>Wie exportiert man template klassen richtig?<br />
normal wäre ja<br />
header</p>
<pre><code class="language-cpp">class __declspec(dllexport) klasse
{
    void a();
};
</code></pre>
<p>src</p>
<pre><code class="language-cpp">void klasse::a()
{
    void a();
}
</code></pre>
<p>damit würde die klasse exportiert.</p>
<p>bei nem template geht das iwie nicht</p>
<pre><code class="language-cpp">template &lt;class T&gt; class __declspec(dllexport) templateKlasse
{
};
</code></pre>
<pre><code class="language-cpp">template &lt;class T&gt; void templateKlasse&lt;T&gt;::a()
{
}
</code></pre>
<p>Da wird a nicht richtig exportiert, das testprogramm stirbt an einer undefined reference to templateKlasse&lt;T&gt;::a()</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190958/templates-richtig-in-dlls-exportieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 21:34:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190958.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Aug 2007 16:51:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 16:51:38 GMT]]></title><description><![CDATA[<p>Wie exportiert man template klassen richtig?<br />
normal wäre ja<br />
header</p>
<pre><code class="language-cpp">class __declspec(dllexport) klasse
{
    void a();
};
</code></pre>
<p>src</p>
<pre><code class="language-cpp">void klasse::a()
{
    void a();
}
</code></pre>
<p>damit würde die klasse exportiert.</p>
<p>bei nem template geht das iwie nicht</p>
<pre><code class="language-cpp">template &lt;class T&gt; class __declspec(dllexport) templateKlasse
{
};
</code></pre>
<pre><code class="language-cpp">template &lt;class T&gt; void templateKlasse&lt;T&gt;::a()
{
}
</code></pre>
<p>Da wird a nicht richtig exportiert, das testprogramm stirbt an einer undefined reference to templateKlasse&lt;T&gt;::a()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353962</guid><dc:creator><![CDATA[piXelshooter]]></dc:creator><pubDate>Tue, 28 Aug 2007 16:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 16:56:49 GMT]]></title><description><![CDATA[<blockquote>
<p>__declspec(dllexport)</p>
</blockquote>
<p>was soll das sein? a.k.a. falsches Forum</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353971</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 28 Aug 2007 16:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:04:30 GMT]]></title><description><![CDATA[<p>Das geht bei Templates nicht (obwohl es offiziell gehen sollte AFAIK).</p>
<p>Bzw. die meisten Compiler unterstützen zu exportierende Templates nicht.</p>
<p>Du darfst Templates auch nicht separat in einer *.cpp Datei unterbringen. Warum? Liegt an den Templates selbst. Evtl. hat einer Lust, das genauer zu erklären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353973</guid><dc:creator><![CDATA[sdfgh]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:04:30 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:11:11 GMT]]></title><description><![CDATA[<p>Dazu steht auch was in der FAQ<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353976</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:11:11 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:21:39 GMT]]></title><description><![CDATA[<p>Templates werden vom Compiler während des Compilierens ausgewertet und der Code für die entsprechenden Typen erzeugt.<br />
DLLs werden zur Laufzeit eingebunden. Dh. wenn der Compiler die DLL erzeugt, kann er nicht wissen, mit welchen Typen das Template verwendet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353984</guid><dc:creator><![CDATA[deha]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:21:39 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:28:59 GMT]]></title><description><![CDATA[<p>sdfgh schrieb:</p>
<blockquote>
<p>Du darfst Templates auch nicht separat in einer *.cpp Datei unterbringen. Warum? Liegt an den Templates selbst. Evtl. hat einer Lust, das genauer zu erklären <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
</blockquote>
<p>Na dann erklär mir das ma, so dass ichs einsehe, denn normal funzt das bei mir sonst wunderbar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<p>b2t, wie funktioniert das dann zum beispiel bei den containern in bibliotheken, zb Qt QVector?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353990</guid><dc:creator><![CDATA[piXelshooter]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:28:59 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:32:55 GMT]]></title><description><![CDATA[<p>indem die Implementierung in der Headerdatei liegt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Es gibt im C++ zwar das Schlüsselwort export, mit welchem man die Implementierung auslagern könnte, aber das unterstützt AFAIK nur der Comeaucompiler und auch noch wahnsinnig unperformant. =&gt; implementierung in den Header (du kannst natürlich die Implementierung eine Implementierungsdatei schreiben (mit irgend ner Endung) und die in der Header includen, wenn dir das besser gefällt^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1353993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1353993</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:32:55 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:45:08 GMT]]></title><description><![CDATA[<p>hm ok bleibt mir wohl nix anderes übrig warum schert sich denn keiner darum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354000</guid><dc:creator><![CDATA[piXelshooter]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:45:53 GMT]]></title><description><![CDATA[<p>piXelshooter schrieb:</p>
<blockquote>
<p>hm ok bleibt mir wohl nix anderes übrig warum schert sich denn keiner darum?</p>
</blockquote>
<p>worum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354002</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:45:53 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:49:22 GMT]]></title><description><![CDATA[<p>piXelshooter schrieb:</p>
<blockquote>
<p>warum schert sich denn keiner darum?</p>
</blockquote>
<p>Typischer Fall von &quot;ist einfach so&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Templates sind ja auch kein <em>richtiger</em> Code an sich, sondern quasi nur ein Mittel, um Code zu erstellen.<br />
Schreibt man z.B. <code>int i = 5;</code> irgendwo in den Quelltext, wird daraus Assembler-Code, den der Prozessor ausführen kann. Wenn man eine Template-Klasse/-Funktion deklariert, ist das noch gar nichts. Erst wenn man sie verwendet, z.B. eben durch <code>vector&lt;xyz&gt; myvar;</code> , wird der eigentliche Code erzeugt. Makros z.B. kann man auch nicht exportieren <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1354003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354003</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:49:22 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 17:52:41 GMT]]></title><description><![CDATA[<p>Ich nehm an, weil keiner wirklich weis<br />
wie man dieses Feature implementieren kann.</p>
<p>Wie macht den der ComeauCompiler das?<br />
Der kann doch nicht im voraus Wissen<br />
welche Klassen und Typen ich in den Templates verwende?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354004</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Tue, 28 Aug 2007 17:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 18:02:07 GMT]]></title><description><![CDATA[<p><a href="http://www.comeaucomputing.com/4.0/docs/userman/export.html" rel="nofollow">http://www.comeaucomputing.com/4.0/docs/userman/export.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354015</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Tue, 28 Aug 2007 18:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 18:06:43 GMT]]></title><description><![CDATA[<p>jup, die liefern in ihrem front-end die einzig bekannte implementierung für den export von templates. wenn ich mich jetzt recht erinnere, sind das wohl einige mannjahre entwicklungsarbeit gewesen... das ist der grund, warum es sonst nicht implementiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354020</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Tue, 28 Aug 2007 18:06:43 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 19:11:05 GMT]]></title><description><![CDATA[<p>In diesem <a href="http://www.amazon.de/Templates-Complete-Guide-David-Vandervoorde/dp/0201734842/ref=pd_bbs_sr_1/028-3493279-5862949?ie=UTF8&amp;s=books-intl-de&amp;qid=1188327536&amp;sr=8-1" rel="nofollow">Buch</a> wird ausführlich beschrieben, wie das mit export funktioniert und was man sonst noch über Templates wissen will. Wenn es jemand verstanden hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> kann er/sie es ja mal kurz hier wiedergeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354071</guid><dc:creator><![CDATA[deha]]></dc:creator><pubDate>Tue, 28 Aug 2007 19:11:05 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Tue, 28 Aug 2007 19:52:59 GMT]]></title><description><![CDATA[<p>edit @ badestrand<br />
ok, das n arg^^<br />
frag mich halt nur warum fast alle die ideen u standards so locker nehmen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354114</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354114</guid><dc:creator><![CDATA[piXelshooter]]></dc:creator><pubDate>Tue, 28 Aug 2007 19:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Wed, 29 Aug 2007 19:00:07 GMT]]></title><description><![CDATA[<p>Checker&amp;Murckser schrieb:</p>
<blockquote>
<p><a href="http://www.comeaucomputing.com/4.0/docs/userman/export.html" rel="nofollow">http://www.comeaucomputing.com/4.0/docs/userman/export.html</a></p>
</blockquote>
<p>Ich hab den Link nicht ganz durchgelesen,<br />
wenn ich aber die relevanten Teile<br />
richtig verstanden habe erzeugt der Compiler<br />
zusätzliche Dateien (Endung .et und .ti)</p>
<blockquote>
<p>The &quot;. et&quot; files only inform Comeau C++ about the location of exported template definitions; they do not actually contain those definitions. The sources containing the exported template definitions must therefore be made available at the time of instantiation (usually, when prelinking is done)</p>
</blockquote>
<p>Und in diesen Dateien steht dann wo die Template Definition zu finden ist.<br />
Ich kann aber jetzt nicht z.B. eine Bibliothek erzeugen<br />
mit Templates (sagen wir mal sowas wie die STL, eben nur<br />
als fertige Bibliothek) und dann einfach dagegenlinken.</p>
<p>//EDIT</p>
<blockquote>
<p>With exported templates, users of the library must also have access to the source code of the exported templates and the information contained in the associated &quot;. et&quot; files, as discussed above.</p>
</blockquote>
<p>Kann man nicht, steht weiter unten.</p>
<blockquote>
<p>Note that the export facility is not a mechanism for avoiding the publication of template definitions in source form.</p>
</blockquote>
<p>Wo ist dann der Sinn von export?<br />
Da finde ich die Lösung mit den Templates im Header eleganter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354835</guid><dc:creator><![CDATA[Mario Sandler]]></dc:creator><pubDate>Wed, 29 Aug 2007 19:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Wed, 29 Aug 2007 19:34:59 GMT]]></title><description><![CDATA[<p>Also wenn ich mich recht erinnern kann, dann habe ich das mal mit __declspec(dllexport) und templates hinbekommen. Ich glaube, dass ich die templates explizit instan...t habe, und die dann als hunderte funktionen exportiert worden sind. Kann aber auch sein, dass ich soetwas verwechsle......</p>
<p>Aber export + implementation verbergen gibt es ja z.B. mit generics in .NET etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1354866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1354866</guid><dc:creator><![CDATA[trherrh]]></dc:creator><pubDate>Wed, 29 Aug 2007 19:34:59 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Wed, 29 Aug 2007 23:50:17 GMT]]></title><description><![CDATA[<p>Generics werden auch zur Laufzeit und nicht zur Compilezeit ausgewertet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1355010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1355010</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Wed, 29 Aug 2007 23:50:17 GMT</pubDate></item><item><title><![CDATA[Reply to Templates richtig in dlls exportieren on Thu, 30 Aug 2007 02:50:13 GMT]]></title><description><![CDATA[<p>Selbst wenn export funktioniert, dann muss man dennoch den Sourcecode der Templates hergeben - und genau das macht export sinnlos. Deshalb implementiert es niemand, weil es sowieso niemand nutzen würde. Es würde lediglich die Kompatibilität zu anderen Compilern brechen aber sonst keinen Vorteil bringen - bis auf eine sauberere Trennung von Definition &lt;-&gt; Implementierung.</p>
<p>Export ist nur dann interessant wenn ich dadurch keinen Sourcecode mehr hergeben muss. Das ist theoretisch möglich, praktisch aber noch ein paar Ecken schwerer als Export alleine.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1355020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1355020</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Thu, 30 Aug 2007 02:50:13 GMT</pubDate></item></channel></rss>