<?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[Template Klasse als Lib]]></title><description><![CDATA[<p>Hallo liebe Leute,</p>
<p>ich habe eine generische Liste mittels Template geschrieben, die ich nun in eine statische Bibliothek überführen möchte.</p>
<p>Nun habe ich aber lediglich ein Header-File Liste.h, in der die Deklaration und Definition der Methoden enthalten ist. Ein Auftrennen in .h und .cpp funktioniert nicht. Da bockt der Compiler. Den Hinweis dazu habe ich auch hier in der FAQ gefunden, dass wohl kaum ein Compiler bei Templates die Trennung frisst.</p>
<p>Wie bekomme ich nun aber mit meinem VS 2010 die lib nur aufgrund der Liste.h hin?</p>
<p>Kennt jemand auch ein Freeware Tool, um in DLLs oder Libs reinzuschauen, welche Funktionen exportiert werden? Leider ist da bei VS 2010 nichts mehr bei. Mit Herrn Google war ich da leider auch nicht erfogreich.</p>
<p>Vielen Dank<br />
Uwe Homm</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/296693/template-klasse-als-lib</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 19:29:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/296693.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Dec 2011 09:47:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template Klasse als Lib on Sat, 10 Dec 2011 09:47:27 GMT]]></title><description><![CDATA[<p>Hallo liebe Leute,</p>
<p>ich habe eine generische Liste mittels Template geschrieben, die ich nun in eine statische Bibliothek überführen möchte.</p>
<p>Nun habe ich aber lediglich ein Header-File Liste.h, in der die Deklaration und Definition der Methoden enthalten ist. Ein Auftrennen in .h und .cpp funktioniert nicht. Da bockt der Compiler. Den Hinweis dazu habe ich auch hier in der FAQ gefunden, dass wohl kaum ein Compiler bei Templates die Trennung frisst.</p>
<p>Wie bekomme ich nun aber mit meinem VS 2010 die lib nur aufgrund der Liste.h hin?</p>
<p>Kennt jemand auch ein Freeware Tool, um in DLLs oder Libs reinzuschauen, welche Funktionen exportiert werden? Leider ist da bei VS 2010 nichts mehr bei. Mit Herrn Google war ich da leider auch nicht erfogreich.</p>
<p>Vielen Dank<br />
Uwe Homm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155283</guid><dc:creator><![CDATA[uhomm]]></dc:creator><pubDate>Sat, 10 Dec 2011 09:47:27 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse als Lib on Sat, 10 Dec 2011 09:57:42 GMT]]></title><description><![CDATA[<p>Ein template ist eine vorlage (für eine Klasse oder Funktion). Wird ein template instantiiert und Methoden verwendet, erzeugt der Compiler Code für diese eine Instantiierung, für die Methoden auch nur wenn sie tatsächlich gebraucht werden (ansonsten wird nur die Syntax geprüft).<br />
Daraus folgt: Der Compiler braucht IMMER den C++-Code. Eine .dll ist schon binär, wie soll der Compiler da an den C++-Code ran kommen?<br />
Eine template-Library kommt deshalb normalerweise als Header-Only-Lib ohne binaries daher. (Stroustrup hat anfangs eigentlich dieses Inclusion-Model nicht favorisiert, da aber alle anderen Modelle Probleme machten, blieb nur diese Lösung)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155286</guid><dc:creator><![CDATA[Nie jemand gar]]></dc:creator><pubDate>Sat, 10 Dec 2011 09:57:42 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse als Lib on Sat, 10 Dec 2011 10:05:33 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke erstmal für die Antwort!</p>
<p>Wenn ich Dich richtig verstanden habe, geht das nicht, weil zur Compilezeit der jeweils verwendete Datentyp, der in den Container soll genannt sein muss?!</p>
<p>Und daher kann ein Klassen-Template *nur* im Source verwendet werden?</p>
<p>Hmmm, wie ist das dann bei der STL? Wenn ich dort den Vector oder die List verwende, kann ich ja auch den Datentyp angegeben. Oder liegen die tatsächlich nur im Quellcode bei? Habe ich noch nie nachgeschaut...</p>
<p>Grüße<br />
Uwe Homm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155288</guid><dc:creator><![CDATA[uhomm]]></dc:creator><pubDate>Sat, 10 Dec 2011 10:05:33 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse als Lib on Sat, 10 Dec 2011 13:50:09 GMT]]></title><description><![CDATA[<p>Die STL meines GCC kommt in lesbaren Headern, ich nehme nicht an, dass der MSVC das anders macht. (Evtl. wird alles durch nen Obfuscator gejagt, dass man den Code nicht mehr ordentlich lesen kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155374</guid><dc:creator><![CDATA[Nie jemand gar]]></dc:creator><pubDate>Sat, 10 Dec 2011 13:50:09 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse als Lib on Sat, 10 Dec 2011 13:52:19 GMT]]></title><description><![CDATA[<p>Die werden im Quellcode vorliegen, ja. Es gibt allerdings die Möglichkeit, bestimmte Konkretisierungen einer Klassenvorlage in binärer Form vorzuhalten; das nennt sich dann <a href="http://publib.boulder.ibm.com/infocenter/lnxpcomp/v111v131/topic/com.ibm.xlcpp111.linux.doc/language_ref/explicit_instantiation.html" rel="nofollow">explicit instantiation</a>.</p>
<p>Es gibt in der Standardbibliothek einige Klassen, die häufig auf diese Weise aus den dahinterliegenden Klassenvorlagen erstellt werden, beispielsweise std::string und std::wstring. Eine standardkonforme Implementation muss das nicht machen, aber es kann Vorteile haben (konkret kürzere Compilezeit und kleinere Binaries). Um andere, nicht binär vorgehaltene Konkretisierungen aus der Klassenvorlage zu erstellen, braucht man allerdings nach wie vor ihren gesamten Quellcode.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155375</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Sat, 10 Dec 2011 13:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse als Lib on Sat, 10 Dec 2011 18:36:10 GMT]]></title><description><![CDATA[<p>uhomm schrieb:</p>
<blockquote>
<p>[...] Da bockt der Compiler. Den Hinweis dazu habe ich auch hier in der FAQ gefunden, dass wohl kaum ein Compiler bei Templates die Trennung frisst.</p>
</blockquote>
<p>Siehe &quot;one definition rule&quot; in einem guten C++ Buch Deiner Wahl.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155458</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sat, 10 Dec 2011 18:36:10 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse als Lib on Sat, 10 Dec 2011 22:10:16 GMT]]></title><description><![CDATA[<p>Nie jemand gar schrieb:</p>
<blockquote>
<p>Die STL meines GCC kommt in lesbaren Headern, ich nehme nicht an, dass der MSVC das anders macht. (Evtl. wird alles durch nen Obfuscator gejagt, dass man den Code nicht mehr ordentlich lesen kann).</p>
</blockquote>
<p>Bei MSVC ist auch nix verhunzt, die Standard-Library Header-Files kann man ganz normal lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155537</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 10 Dec 2011 22:10:16 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse als Lib on Sun, 11 Dec 2011 09:38:58 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Erläuterungen!</p>
<p>Ich habe gestern dann auch gleich mal geschaut, ob die STL-Header den Code enthalten. Und wie bereits Hustbaer schreibt, liegen die auch bei VS2010 im lesbaren Source vor.</p>
<p>Schöne Weihnachten!<br />
Uwe Homm</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2155615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2155615</guid><dc:creator><![CDATA[uhomm]]></dc:creator><pubDate>Sun, 11 Dec 2011 09:38:58 GMT</pubDate></item></channel></rss>