<?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[VC++ 2010: Linker Error LNK2001 - unresolved external symbol (template)]]></title><description><![CDATA[<p>Guten Zag.<br />
Ich komme mir blöd vor, aber kann einen Linker Error gerade einfach nicht beheben, die MSDN hilft mir leider im Moment auch nicht. Oder es ist einfach zu früh.</p>
<p>Ich muss gerade viel mit std::vector arbeiten und habe mir ein paar Funktionen gebaut:</p>
<p>----------------------------------------------------------------------<br />
vecutil.h</p>
<pre><code class="language-cpp">#pragma once
#include &lt;vector&gt;

template&lt;class T&gt;
bool vecContains(const std::vector&lt;T&gt; &amp;vec, const T &amp;t);

template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const T &amp;t);
template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const int index);
</code></pre>
<p>Da stehen noch mehr drin, aber die sind atm unbenutzt.</p>
<p>vecutil.cpp</p>
<pre><code class="language-cpp">#include &quot;vecutil.h&quot;

template&lt;class T&gt;
bool vecContains(const std::vector&lt;T&gt; &amp;vec, const T &amp;t)
{
	return vecValidIndex(vecIndexOf(vec, t));
}

template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const T &amp;t)
{
	vecMoveToFront(vec, vecIndexOf(vec, t));
}

template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const int index)
{
	if(!vecValidIndex(vec, index) || vec.size() &lt; 2) return;

	T newFirst = vec.at(index);
	for(int i = index; i &gt; 0; i--)
		vec[i] = vec.at(i - 1);
	vec[0] = newFirst;
}
</code></pre>
<p>---------------------------------------------------------------------------</p>
<p>Nun habe ich eine Klasse &quot;BasicWindow&quot;, die einen private member std::vector&lt;BasicWindow*&gt; enthaelt. Gekuerzte Deklaration (c&amp;p):<br />
basicwindow.h</p>
<pre><code class="language-cpp">#pragma once
#include &lt;vector&gt;

typedef std::vector&lt;BasicWindow*&gt; BasicWindowPtrVec;

class BasicWindow
{
public:
// [...]
	void onChildFocus(BasicWindow *child);
// [...]
private:
	BasicWindow *m_parent;
	BasicWindowPtrVec m_children;
};
</code></pre>
<p>In der einen Methode, die aufgeführt ist, mache ich folgendes:<br />
basicwindow.cpp</p>
<pre><code class="language-cpp">#include &quot;basicwindow.h&quot;
#include &quot;vecutil.h&quot;

// [...]

void BasicWindow::onChildFocus(BasicWindow *child)
{
	vecMoveToFront(m_children, child);
	child-&gt;m_focus = true;
}
</code></pre>
<p>... so, soviel zum Code. Der mag vielleicht nicht großartig sein, aber sollte doch funktionieren ...<br />
Aber es gibt folgende Linker Meldung:</p>
<p>msvc++2010 linker schrieb:</p>
<blockquote>
<p>l&gt; basicwindow.obj : error LNK2001: unresolved external symbol &quot;void __cdecl vecMoveToFront&lt;class BasicWindow *&gt;(class std::vector&lt;class BasicWindow *,class std::allocator&lt;class BasicWindow *&gt; &gt; &amp;,class BasicWindow * const &amp;)&quot;</p>
<p>l&gt; LW:\Pfad\Zu\Meiner\Dll : fatal error LNK1120: 1 unresolved externals</p>
</blockquote>
<p>Ich kommte da nicht mit. Ist da ein offensichtlicher Fehler?<br />
Ich hoffe, mir kann da jemand behilflich sein und bedanke mich jetzt schon mal!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273148/vc-2010-linker-error-lnk2001-unresolved-external-symbol-template</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 10:54:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273148.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 01 Sep 2010 07:50:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to VC++ 2010: Linker Error LNK2001 - unresolved external symbol (template) on Wed, 01 Sep 2010 07:50:28 GMT]]></title><description><![CDATA[<p>Guten Zag.<br />
Ich komme mir blöd vor, aber kann einen Linker Error gerade einfach nicht beheben, die MSDN hilft mir leider im Moment auch nicht. Oder es ist einfach zu früh.</p>
<p>Ich muss gerade viel mit std::vector arbeiten und habe mir ein paar Funktionen gebaut:</p>
<p>----------------------------------------------------------------------<br />
vecutil.h</p>
<pre><code class="language-cpp">#pragma once
#include &lt;vector&gt;

template&lt;class T&gt;
bool vecContains(const std::vector&lt;T&gt; &amp;vec, const T &amp;t);

template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const T &amp;t);
template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const int index);
</code></pre>
<p>Da stehen noch mehr drin, aber die sind atm unbenutzt.</p>
<p>vecutil.cpp</p>
<pre><code class="language-cpp">#include &quot;vecutil.h&quot;

template&lt;class T&gt;
bool vecContains(const std::vector&lt;T&gt; &amp;vec, const T &amp;t)
{
	return vecValidIndex(vecIndexOf(vec, t));
}

template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const T &amp;t)
{
	vecMoveToFront(vec, vecIndexOf(vec, t));
}

template&lt;class T&gt;
void vecMoveToFront(std::vector&lt;T&gt; &amp;vec, const int index)
{
	if(!vecValidIndex(vec, index) || vec.size() &lt; 2) return;

	T newFirst = vec.at(index);
	for(int i = index; i &gt; 0; i--)
		vec[i] = vec.at(i - 1);
	vec[0] = newFirst;
}
</code></pre>
<p>---------------------------------------------------------------------------</p>
<p>Nun habe ich eine Klasse &quot;BasicWindow&quot;, die einen private member std::vector&lt;BasicWindow*&gt; enthaelt. Gekuerzte Deklaration (c&amp;p):<br />
basicwindow.h</p>
<pre><code class="language-cpp">#pragma once
#include &lt;vector&gt;

typedef std::vector&lt;BasicWindow*&gt; BasicWindowPtrVec;

class BasicWindow
{
public:
// [...]
	void onChildFocus(BasicWindow *child);
// [...]
private:
	BasicWindow *m_parent;
	BasicWindowPtrVec m_children;
};
</code></pre>
<p>In der einen Methode, die aufgeführt ist, mache ich folgendes:<br />
basicwindow.cpp</p>
<pre><code class="language-cpp">#include &quot;basicwindow.h&quot;
#include &quot;vecutil.h&quot;

// [...]

void BasicWindow::onChildFocus(BasicWindow *child)
{
	vecMoveToFront(m_children, child);
	child-&gt;m_focus = true;
}
</code></pre>
<p>... so, soviel zum Code. Der mag vielleicht nicht großartig sein, aber sollte doch funktionieren ...<br />
Aber es gibt folgende Linker Meldung:</p>
<p>msvc++2010 linker schrieb:</p>
<blockquote>
<p>l&gt; basicwindow.obj : error LNK2001: unresolved external symbol &quot;void __cdecl vecMoveToFront&lt;class BasicWindow *&gt;(class std::vector&lt;class BasicWindow *,class std::allocator&lt;class BasicWindow *&gt; &gt; &amp;,class BasicWindow * const &amp;)&quot;</p>
<p>l&gt; LW:\Pfad\Zu\Meiner\Dll : fatal error LNK1120: 1 unresolved externals</p>
</blockquote>
<p>Ich kommte da nicht mit. Ist da ein offensichtlicher Fehler?<br />
Ich hoffe, mir kann da jemand behilflich sein und bedanke mich jetzt schon mal!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946850</guid><dc:creator><![CDATA[kleineranfänger]]></dc:creator><pubDate>Wed, 01 Sep 2010 07:50:28 GMT</pubDate></item><item><title><![CDATA[Reply to VC++ 2010: Linker Error LNK2001 - unresolved external symbol (template) on Wed, 01 Sep 2010 08:03:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ja, ist offensichtlich <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="😉"
    /></p>
<p>Template-Code kann nicht in ein cpp-File ausgelagert werden, siehe <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html" rel="nofollow">hier in der FAQ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946858</guid><dc:creator><![CDATA[Jockelx]]></dc:creator><pubDate>Wed, 01 Sep 2010 08:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to VC++ 2010: Linker Error LNK2001 - unresolved external symbol (template) on Wed, 01 Sep 2010 08:08:08 GMT]]></title><description><![CDATA[<p>oh ... da war was. Du hast recht, ja. Danke.<br />
[Ausrede]Es lag an der Uhrzeit ...[/Ausrede]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946860</guid><dc:creator><![CDATA[kleineranfänger]]></dc:creator><pubDate>Wed, 01 Sep 2010 08:08:08 GMT</pubDate></item></channel></rss>