<?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 in einer Statischen Library[Linux]]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich wollte mir gerade für eine Utility-Library ein paar Template-Funktionen und -Klassen schreiben. Das kompilieren und linken der Library ging problemlos, aber als ich dann das richtige Programm linken wollte, sagte GCC, dass er keine Referenzen für die Template-Funktionen gefunden hätte. Die Lib ist allerdings richtig verlink und mit einer anderen Lib(die aber keine Templates beinhaltet) funktioniert das ganze. Könnte das daran liegt, dass der GCC keinen Object-Code in die Lib schreibt, wenn man Templates verwendet? Schließlich verwendet man ja innerhalb der Lib keine dieser Template-Klassen und so muss der Compiler auch keine richtigen Klassen daraus generieren. Desweiteren wundert es mich, dass die erzeugte .obj-Datei(Lib) nur 690 Bytes groß ist.</p>
<p>Thx im vorraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187312/templates-in-einer-statischen-library-linux</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 15:07:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187312.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jul 2007 11:31:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates in einer Statischen Library[Linux] on Wed, 18 Jul 2007 11:31:28 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich wollte mir gerade für eine Utility-Library ein paar Template-Funktionen und -Klassen schreiben. Das kompilieren und linken der Library ging problemlos, aber als ich dann das richtige Programm linken wollte, sagte GCC, dass er keine Referenzen für die Template-Funktionen gefunden hätte. Die Lib ist allerdings richtig verlink und mit einer anderen Lib(die aber keine Templates beinhaltet) funktioniert das ganze. Könnte das daran liegt, dass der GCC keinen Object-Code in die Lib schreibt, wenn man Templates verwendet? Schließlich verwendet man ja innerhalb der Lib keine dieser Template-Klassen und so muss der Compiler auch keine richtigen Klassen daraus generieren. Desweiteren wundert es mich, dass die erzeugte .obj-Datei(Lib) nur 690 Bytes groß ist.</p>
<p>Thx im vorraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327719</guid><dc:creator><![CDATA[Dr. C++]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:31:28 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in einer Statischen Library[Linux] on Wed, 18 Jul 2007 11:36:48 GMT]]></title><description><![CDATA[<blockquote>
<p>Könnte das daran liegt, dass der GCC keinen Object-Code in die Lib schreibt, wenn man Templates verwendet? Schließlich verwendet man ja innerhalb der Lib keine dieser Template-Klassen und so muss der Compiler auch keine richtigen Klassen daraus generieren.</p>
</blockquote>
<p>Der GCC, genau wie so gut wie jeder andere aktuelle Compiler, erzeugt für Templates generell keinen Objektcode. Templates müssen, wenn sie benutzt werden, in vollständiger Quelltextform vorliegen. Deshalb findet man Template-Implementierungen in C++ auch durchgängig immer in den Header-Dateien, sei es bei der Standardbibliothek oder in anderen Bibliotheken.</p>
<p>Was der Compiler auslagern könnte, wären Spezialisierungen und konkrete Instanziierungen. Aber woher willst Du beim Erstellen der Lib wissen, welche konkreten Instanziierungen ein Kunde mal brauchen könnte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327724</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:36:48 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in einer Statischen Library[Linux] on Wed, 18 Jul 2007 11:38:30 GMT]]></title><description><![CDATA[<p>Wenn du Templates verwendest, muß der Compiler die Definition (Funktionsrümpfe) und die Instanziierung (Anwendung) auf einen Blick vorliegen haben, sonst kann er keinen Code erzeugen (in der Lib weiß er nicht, ob er Spezialisierungen für int, string oder hundekuchen benötigt, im Programm weiß er nicht, wie die Funktionen aufgebaut sein sollen). DArum gehören Template-Funktionen direkt in den Header.</p>
<p>(PS: Im Standard ist das Schlüsselwort 'export' vorgesehen, aber kaum ein Compiler unterstützt das wirklich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327726</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 18 Jul 2007 11:38:30 GMT</pubDate></item><item><title><![CDATA[Reply to Templates in einer Statischen Library[Linux] on Wed, 18 Jul 2007 12:48:59 GMT]]></title><description><![CDATA[<p>Thx! Wieder was neues gelernt <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/1327778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327778</guid><dc:creator><![CDATA[Dr. C++]]></dc:creator><pubDate>Wed, 18 Jul 2007 12:48:59 GMT</pubDate></item></channel></rss>