<?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[Library erstellen: Doppelt definierte Symbole vermeiden]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mit dem VC++ einige Klassen und Funktionen geschrieben, die ich nun gerne in eine *.lib packen würde. Diese Funktionen inkludieren jede Menge Standardheader, zum Beispiel &lt;iostream&gt;. Also habe ich nun ein neues Projekterstellt (lib), die Projektdateien eingebunden, und kompiliert. Soweit so gut.</p>
<p>Nun will ich die Lib in einem anderen Programm verwenden. Dazu inkludiere ich den Header der lib (der unter anderem eben iostream inkludiert). Beim Linken erhalte ich dann allerdings jede Menge Fehler von irgendwelchen doppelten Definierungen:</p>
<p>msvcprtd.lib(MSVCP60D.dll) : error LNK2005: &quot;public: class std::basic_ostream&lt;char,struct std::char_traits&lt;char&gt; &gt; &amp; __thiscall std::basic_ostream&lt;char,struct std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(unsigned int)&quot; (??6?<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>b</mi><mi>a</mi><mi>s</mi><mi>i</mi><mi>c</mi><mi mathvariant="normal">_</mi><mi>o</mi><mi>s</mi><mi>t</mi><mi>r</mi><mi>e</mi><mi>a</mi><mi>m</mi><mi mathvariant="normal">@</mi><mi>D</mi><mi>U</mi><mo>?</mo></mrow><annotation encoding="application/x-tex">basic\_ostream@DU?</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:1.00444em;vertical-align:-0.31em;"></span><span class="base textstyle uncramped"><span class="mord mathit">b</span><span class="mord mathit">a</span><span class="mord mathit">s</span><span class="mord mathit">i</span><span class="mord mathit">c</span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathit">o</span><span class="mord mathit">s</span><span class="mord mathit">t</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">e</span><span class="mord mathit">a</span><span class="mord mathit">m</span><span class="mord mathrm">@</span><span class="mord mathit" style="margin-right:0.02778em;">D</span><span class="mord mathit" style="margin-right:0.10903em;">U</span><span class="mclose">?</span></span></span></span>char_traits@D@<br />
std@@@std@@QAEAAV01@I@Z) already defined in ckgui.lib(ckgui.obj)</p>
<p>(ckgui.lib ist meine selbst erstellte lib). Ich nehme an, die Implementierung dieses z.B. operators ist mit in die ckgui.lib gerutscht, dabei sollte sie da ja eigentlich gar nicht sein? Wenn ich iostream nicht einbinde, meckert schon der Compiler.</p>
<p>Ich hoffe, ihr versteht mein Problem und könnt mir helfen <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="🙂"
    /><br />
Vielen Dank,<br />
Phobos</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/48211/library-erstellen-doppelt-definierte-symbole-vermeiden</link><generator>RSS for Node</generator><lastBuildDate>Tue, 28 Apr 2026 10:56:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/48211.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Sep 2003 14:03:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Library erstellen: Doppelt definierte Symbole vermeiden on Sat, 06 Sep 2003 14:25:17 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe mit dem VC++ einige Klassen und Funktionen geschrieben, die ich nun gerne in eine *.lib packen würde. Diese Funktionen inkludieren jede Menge Standardheader, zum Beispiel &lt;iostream&gt;. Also habe ich nun ein neues Projekterstellt (lib), die Projektdateien eingebunden, und kompiliert. Soweit so gut.</p>
<p>Nun will ich die Lib in einem anderen Programm verwenden. Dazu inkludiere ich den Header der lib (der unter anderem eben iostream inkludiert). Beim Linken erhalte ich dann allerdings jede Menge Fehler von irgendwelchen doppelten Definierungen:</p>
<p>msvcprtd.lib(MSVCP60D.dll) : error LNK2005: &quot;public: class std::basic_ostream&lt;char,struct std::char_traits&lt;char&gt; &gt; &amp; __thiscall std::basic_ostream&lt;char,struct std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(unsigned int)&quot; (??6?<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>b</mi><mi>a</mi><mi>s</mi><mi>i</mi><mi>c</mi><mi mathvariant="normal">_</mi><mi>o</mi><mi>s</mi><mi>t</mi><mi>r</mi><mi>e</mi><mi>a</mi><mi>m</mi><mi mathvariant="normal">@</mi><mi>D</mi><mi>U</mi><mo>?</mo></mrow><annotation encoding="application/x-tex">basic\_ostream@DU?</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:1.00444em;vertical-align:-0.31em;"></span><span class="base textstyle uncramped"><span class="mord mathit">b</span><span class="mord mathit">a</span><span class="mord mathit">s</span><span class="mord mathit">i</span><span class="mord mathit">c</span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathit">o</span><span class="mord mathit">s</span><span class="mord mathit">t</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">e</span><span class="mord mathit">a</span><span class="mord mathit">m</span><span class="mord mathrm">@</span><span class="mord mathit" style="margin-right:0.02778em;">D</span><span class="mord mathit" style="margin-right:0.10903em;">U</span><span class="mclose">?</span></span></span></span>char_traits@D@<br />
std@@@std@@QAEAAV01@I@Z) already defined in ckgui.lib(ckgui.obj)</p>
<p>(ckgui.lib ist meine selbst erstellte lib). Ich nehme an, die Implementierung dieses z.B. operators ist mit in die ckgui.lib gerutscht, dabei sollte sie da ja eigentlich gar nicht sein? Wenn ich iostream nicht einbinde, meckert schon der Compiler.</p>
<p>Ich hoffe, ihr versteht mein Problem und könnt mir helfen <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="🙂"
    /><br />
Vielen Dank,<br />
Phobos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/348506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/348506</guid><dc:creator><![CDATA[Phobos]]></dc:creator><pubDate>Sat, 06 Sep 2003 14:25:17 GMT</pubDate></item></channel></rss>