<?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[[Erledigt] Linker Fehler: Multiple Definitions]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>Ich versuch mich gerade an einer kleinen Consolenanwendung und hab ein kleines Problem:<br />
(Vorsicht, ich bin Anfänger :D)</p>
<p>File 1:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

#include &quot;Application.cpp&quot;

int main(int argc, char* argv[])
{
	Application *app = new Application(argc, argv);

	delete app;

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>File 2:</p>
<pre><code class="language-cpp">#pragma once

#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

class Application
{
public:
	Application(int argc, char* args[]);
private:
	bool isArgumentPresent(string arg);
	vector&lt;string&gt; cmdArgs;
};

Application::Application(int argc, char* args[])
{
	for (int i = 0; i &lt; argc; i++)
	{
		string a(args[i]);
		cmdArgs.push_back(a);
	}
}

bool Application::isArgumentPresent(string arg)
{
	for (int i = 0; i &lt; cmdArgs.capacity(); i++)
	{
		if (arg == cmdArgs[i])
		{
			return true;
		}
	}
	return false;
}
</code></pre>
<p>Nachdem ich die Klassendeklaration von einer Headerdatei in die Codedatei verschoben<br />
habe (sonst blick ich nicht mehr durch) beschwert sich auf einmal der Linker (MSVC <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /><br />
über &quot;multiple definitions&quot;:</p>
<blockquote>
<p>Error 1 error LNK2005: &quot;public: __thiscall Application::Application(int,char * * const)&quot;<br />
already defined in OOBC.obj Application.obj<br />
Error 2 error LNK2005: &quot;private: bool __thiscall Application::isArgumentPresent<br />
already defined in OOBC.obj Application.obj<br />
Error 3 fatal error LNK1169: one or more multiply defined symbols found</p>
</blockquote>
<p>Weiß irgendjemand Rat?</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209069/erledigt-linker-fehler-multiple-definitions</link><generator>RSS for Node</generator><lastBuildDate>Mon, 12 Oct 2026 09:22:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209069.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Mar 2008 12:52:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Erledigt] Linker Fehler: Multiple Definitions on Wed, 26 Mar 2008 16:36:14 GMT]]></title><description><![CDATA[<p>Hallo allerseits,</p>
<p>Ich versuch mich gerade an einer kleinen Consolenanwendung und hab ein kleines Problem:<br />
(Vorsicht, ich bin Anfänger :D)</p>
<p>File 1:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

#include &quot;Application.cpp&quot;

int main(int argc, char* argv[])
{
	Application *app = new Application(argc, argv);

	delete app;

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>File 2:</p>
<pre><code class="language-cpp">#pragma once

#include &lt;string&gt;
#include &lt;vector&gt;
using namespace std;

class Application
{
public:
	Application(int argc, char* args[]);
private:
	bool isArgumentPresent(string arg);
	vector&lt;string&gt; cmdArgs;
};

Application::Application(int argc, char* args[])
{
	for (int i = 0; i &lt; argc; i++)
	{
		string a(args[i]);
		cmdArgs.push_back(a);
	}
}

bool Application::isArgumentPresent(string arg)
{
	for (int i = 0; i &lt; cmdArgs.capacity(); i++)
	{
		if (arg == cmdArgs[i])
		{
			return true;
		}
	}
	return false;
}
</code></pre>
<p>Nachdem ich die Klassendeklaration von einer Headerdatei in die Codedatei verschoben<br />
habe (sonst blick ich nicht mehr durch) beschwert sich auf einmal der Linker (MSVC <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /><br />
über &quot;multiple definitions&quot;:</p>
<blockquote>
<p>Error 1 error LNK2005: &quot;public: __thiscall Application::Application(int,char * * const)&quot;<br />
already defined in OOBC.obj Application.obj<br />
Error 2 error LNK2005: &quot;private: bool __thiscall Application::isArgumentPresent<br />
already defined in OOBC.obj Application.obj<br />
Error 3 fatal error LNK1169: one or more multiply defined symbols found</p>
</blockquote>
<p>Weiß irgendjemand Rat?</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480581</guid><dc:creator><![CDATA[milan1612]]></dc:creator><pubDate>Wed, 26 Mar 2008 16:36:14 GMT</pubDate></item><item><title><![CDATA[Reply to [Erledigt] Linker Fehler: Multiple Definitions on Wed, 26 Mar 2008 12:57:52 GMT]]></title><description><![CDATA[<p>1. *.cpp Dateien werden nicht inkludiert. Nur *.h Dateien.<br />
2. Trenne die Deklaration (-&gt; *.h Files) von der Definition (-&gt; *.cpp Files).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480586</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 26 Mar 2008 12:57:52 GMT</pubDate></item><item><title><![CDATA[Reply to [Erledigt] Linker Fehler: Multiple Definitions on Wed, 26 Mar 2008 13:01:40 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>1. *.cpp Dateien werden nicht inkludiert. Nur *.h Dateien.<br />
2. Trenne die Deklaration (-&gt; *.h Files) von der Definition (-&gt; *.cpp Files).</p>
</blockquote>
<p>Ist das generell nicht möglich oder bloß guter Stil?<br />
Denn eigentlich finde ich das persönlich übersichtlicher...</p>
<p>EDIT: Wenn ich die Application.cpp in Application.h umbenenne funktionierts *weird*<br />
Trotzdem danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480589</guid><dc:creator><![CDATA[milan1612]]></dc:creator><pubDate>Wed, 26 Mar 2008 13:01:40 GMT</pubDate></item><item><title><![CDATA[Reply to [Erledigt] Linker Fehler: Multiple Definitions on Wed, 26 Mar 2008 13:07:56 GMT]]></title><description><![CDATA[<p>Man *kann* CPP-Dateien inkludieren. Gibt aber nur einen Fall in dem das Sinn macht (Templates) und selbst da ist es nicht schön.</p>
<p>Warum es mit der Umbenennung funktioniert liegt daran das dein Compiler beide CPP-Dateien übersetzt und da die erste ja die zweite inkludiert diese dann doppelt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480597</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 26 Mar 2008 13:07:56 GMT</pubDate></item><item><title><![CDATA[Reply to [Erledigt] Linker Fehler: Multiple Definitions on Wed, 26 Mar 2008 13:17:51 GMT]]></title><description><![CDATA[<p>milan1612 schrieb:</p>
<blockquote>
<p>simon.gysi schrieb:</p>
<blockquote>
<p>1. *.cpp Dateien werden nicht inkludiert. Nur *.h Dateien.<br />
2. Trenne die Deklaration (-&gt; *.h Files) von der Definition (-&gt; *.cpp Files).</p>
</blockquote>
<p>Ist das generell nicht möglich oder bloß guter Stil?</p>
</blockquote>
<p>In der Regel wegen Seiteneffekten nicht möglich, eine Ausnahme hierzu sind u.a. Templates. Ganz davon abgesehen ist es zudem guter Stil, da eine saubere Trennung von Schnittstelle (Deklaration) und Implementierung (Definition) die Gefahr reduziert das man &quot;gegen die Implementierung&quot; programmiert, statt wie empfehlenswert &quot;gegen die Schnittstelle&quot;. Bei Bibliotheken arbeitet man auch teilweise mit den Headern ohne die Implemenitierung zu haben.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480609</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 26 Mar 2008 13:17:51 GMT</pubDate></item><item><title><![CDATA[Reply to [Erledigt] Linker Fehler: Multiple Definitions on Wed, 26 Mar 2008 16:35:58 GMT]]></title><description><![CDATA[<p>Danke an alle, nachdem ich die CPP Datei in .h umbenannt habe funktioniert jetzt<br />
alles.<br />
Grüße, Milan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480801</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480801</guid><dc:creator><![CDATA[milan1612]]></dc:creator><pubDate>Wed, 26 Mar 2008 16:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to [Erledigt] Linker Fehler: Multiple Definitions on Wed, 26 Mar 2008 16:42:03 GMT]]></title><description><![CDATA[<p>milan1612 schrieb:</p>
<blockquote>
<p>Danke an alle, nachdem ich die CPP Datei in .h umbenannt habe funktioniert jetzt<br />
alles.</p>
</blockquote>
<p>Ja, jetzt... Aber mach dir mal die Mühe diese Datei von zwei verschiedenen Stellen im Projekt zu inkludieren. Der Weg des (scheinbar) geringsten Widerstandes ist in C++ selten gut.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1480809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1480809</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 26 Mar 2008 16:42:03 GMT</pubDate></item></channel></rss>