<?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[Linkerfehler: &amp;quot;unresolved external symbol&amp;quot;]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in mehreren Compilern (GCC, MSVC++) einen Linkerfehler bei einem Projekt, welches folgenden Code enthält (stark verkürzt, u.a. include-Guards weggelassen):</p>
<pre><code class="language-cpp">// matrix.hpp

namespace madrat { namespace Utility {
template&lt;class T&gt; class Matrix {
public:
    // ...
    int rows() const;
};
}}
</code></pre>
<pre><code class="language-cpp">// matrix.cpp

#include &quot;matrix.hpp&quot;

using namespace madrat::Utility;

// ...
template&lt;class T&gt;
inline int Matrix&lt;T&gt;::cols() const
{
    return this-&gt;data[0].size();
}
</code></pre>
<pre><code class="language-cpp">// alignment.hpp

#include &lt;map&gt;

namespace madrat { namespace bioinf {

class Alignment : public std::pair&lt;int, int&gt; {
public:
    // ...
    datentyp do_align(/* args */);
};
}}
</code></pre>
<pre><code class="language-cpp">// alignment.cpp

#include &quot;alignment.hpp&quot;
#include &quot;matrix.hpp&quot;

using namespace madrat::bioinf;

datentyp Alignment::do_align(/* args */)
{
    madrat::Utility::Matrix&lt;int&gt; F(/* ... */);
    // ...
    F.cols(); // *
}
</code></pre>
<p>IMHO sind dort alle Implementierungen korrekt referenziert, trotzdem meldet der Linker den Fehler &quot;unresolved external symbol [...] madrat::Utility::Matrix&lt;int&gt; [...]&quot; in der Zeile mit dem Stern (und in Wahrheit für jeden einzelnen Zugriff auf Mitglieder der öffentlichen Schnittstelle von 'Matrix' in der Funktion 'do_align').</p>
<p>Ich habe auch schon mal versucht, das 'inline' in der Definition von 'cols' wegzulassen, da das mit verschachtelten Namensbereichen schon in früheren Projekten von mir Probleme bereitet hat, das hat aber auch nicht geholfen.</p>
<p>Kann mir das jemand erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/125152/linkerfehler-quot-unresolved-external-symbol-quot</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 05:28:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/125152.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Nov 2005 20:03:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linkerfehler: &amp;quot;unresolved external symbol&amp;quot; on Thu, 03 Nov 2005 20:03:59 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in mehreren Compilern (GCC, MSVC++) einen Linkerfehler bei einem Projekt, welches folgenden Code enthält (stark verkürzt, u.a. include-Guards weggelassen):</p>
<pre><code class="language-cpp">// matrix.hpp

namespace madrat { namespace Utility {
template&lt;class T&gt; class Matrix {
public:
    // ...
    int rows() const;
};
}}
</code></pre>
<pre><code class="language-cpp">// matrix.cpp

#include &quot;matrix.hpp&quot;

using namespace madrat::Utility;

// ...
template&lt;class T&gt;
inline int Matrix&lt;T&gt;::cols() const
{
    return this-&gt;data[0].size();
}
</code></pre>
<pre><code class="language-cpp">// alignment.hpp

#include &lt;map&gt;

namespace madrat { namespace bioinf {

class Alignment : public std::pair&lt;int, int&gt; {
public:
    // ...
    datentyp do_align(/* args */);
};
}}
</code></pre>
<pre><code class="language-cpp">// alignment.cpp

#include &quot;alignment.hpp&quot;
#include &quot;matrix.hpp&quot;

using namespace madrat::bioinf;

datentyp Alignment::do_align(/* args */)
{
    madrat::Utility::Matrix&lt;int&gt; F(/* ... */);
    // ...
    F.cols(); // *
}
</code></pre>
<p>IMHO sind dort alle Implementierungen korrekt referenziert, trotzdem meldet der Linker den Fehler &quot;unresolved external symbol [...] madrat::Utility::Matrix&lt;int&gt; [...]&quot; in der Zeile mit dem Stern (und in Wahrheit für jeden einzelnen Zugriff auf Mitglieder der öffentlichen Schnittstelle von 'Matrix' in der Funktion 'do_align').</p>
<p>Ich habe auch schon mal versucht, das 'inline' in der Definition von 'cols' wegzulassen, da das mit verschachtelten Namensbereichen schon in früheren Projekten von mir Probleme bereitet hat, das hat aber auch nicht geholfen.</p>
<p>Kann mir das jemand erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/907672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/907672</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 03 Nov 2005 20:03:59 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler: &amp;quot;unresolved external symbol&amp;quot; on Thu, 03 Nov 2005 20:51:04 GMT]]></title><description><![CDATA[<p>Schon versucht die Templatedeklarationen in die Headerdatei zu verlegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/907695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/907695</guid><dc:creator><![CDATA[1r0ll|&#x5C;&#x2F;|4514h]]></dc:creator><pubDate>Thu, 03 Nov 2005 20:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler: &amp;quot;unresolved external symbol&amp;quot; on Thu, 03 Nov 2005 20:52:11 GMT]]></title><description><![CDATA[<p>Ich meinte Templatedefinitionen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/907696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/907696</guid><dc:creator><![CDATA[1r0ll|&#x5C;&#x2F;|4514h]]></dc:creator><pubDate>Thu, 03 Nov 2005 20:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler: &amp;quot;unresolved external symbol&amp;quot; on Thu, 03 Nov 2005 20:58:56 GMT]]></title><description><![CDATA[<p>1r0ll|/|4514h schrieb:</p>
<blockquote>
<p>Ich meinte Templatedefinitionen</p>
</blockquote>
<p>Sorry ... ich verstehe nicht, was Du mit &quot;Templatedefinitionen&quot; in diesem Kontext meinst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/907700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/907700</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 03 Nov 2005 20:58:56 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler: &amp;quot;unresolved external symbol&amp;quot; on Thu, 03 Nov 2005 21:05:57 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html" rel="nofollow">FAQ: Template in Header- und Source-Datei aufteilen</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/907704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/907704</guid><dc:creator><![CDATA[terraner]]></dc:creator><pubDate>Thu, 03 Nov 2005 21:05:57 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler: &amp;quot;unresolved external symbol&amp;quot; on Thu, 03 Nov 2005 21:22:00 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Info. Problem behoben. Ich war fest davon überzeugt, bereits Klassen mit Typenparametern getrennt deklariert/implementiert zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/907713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/907713</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Thu, 03 Nov 2005 21:22:00 GMT</pubDate></item></channel></rss>