<?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 LNK2005 und LNK1169]]></title><description><![CDATA[<p>Hallo.<br />
Ich wage mich an ein etwas größes Projekt. Jedoch ist mir nun direkt am Anfang ein Linkerfehler aufgetreten.</p>
<pre><code>//main.cpp
#include &quot;solarCoordinates.h&quot;

int main (char argc, char * argv[]) {
	int returnOfOFD = _CSC.GetOpenFileDialog();
	return 0;
}
</code></pre>
<pre><code>//solarCoordinates.h

#ifndef _solarCoordinateTransformation_h_
#define _solarCoordinateTransformation_h_

#include &lt;string&gt;

class solarCoordinateTransformation {

public:
	int GetOpenFileDialog();

private:
	std::string PathOfTheRoundupFile;

} _CSC;  //HIER MEINE ICH

#endif
</code></pre>
<pre><code>// solarCoordinates.cpp

#include &quot;solarCoordinates.h&quot;
#include &lt;Windows.h&gt;

int solarCoordinateTransformation::GetOpenFileDialog() {
	OPENFILENAME ofn;
	char path[1000];
	HWND hWnd = GetConsoleWindow();
	ZeroMemory(&amp;ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.hwndOwner = hWnd;
	ofn.lpstrFile = path; 
	ofn.lpstrFile[0] = '\0'; 
	ofn.nMaxFile = sizeof(path); 
	ofn.lpstrFilter = &quot;Textdatei (*.txt)\0*.TXT\0&quot;; 
	ofn.nFilterIndex = 1; 
	ofn.lpstrFileTitle = NULL; 
	ofn.nMaxFileTitle = 0; 
	ofn.lpstrInitialDir = &quot;Z:&quot;;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
	BOOL successfulDialogBox = GetOpenFileName(&amp;ofn);
	if (successfulDialogBox == 1) {
		int returnFromMesasgeBox = MessageBox(hWnd,&quot;Bitte wählen Sie eine Datei aus.&quot;,&quot;Datei einlesen fehlgeschlagen!&quot;,MB_OKCANCEL|MB_ICONWARNING);
		if (returnFromMesasgeBox == 1) {
			_CSC.GetOpenFileDialog();
			return 0;
		} else {
			return -1;
		}
	}
	_CSC.PathOfTheRoundupFile = path;
	return 0;
}
</code></pre>
<p>Meine Frage ist, ob ich der Klasse, so wie ich es gemacht habe einen &quot;Standardnamen&quot; zu geben. Markiert in der Headerdatei.</p>
<p>2. Frage ist, warum diese Fehler auftreten.</p>
<pre><code>1&gt;solarCoordinates.obj : error LNK2005: &quot;class solarCoordinateTransformation _CSC&quot; (?_CSC@@3VsolarCoordinateTransformation@@A) ist bereits in main.obj definiert.
</code></pre>
<pre><code>1&gt;D:\Eigene Datein\Dropbox\rechner 2.1.1\Debug\rechner 2.1.1.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
</code></pre>
<p>Hat hier jemand eine Antwort?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/313764/linkerfehler-lnk2005-und-lnk1169</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 23:22:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/313764.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 Feb 2013 19:36:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Linkerfehler LNK2005 und LNK1169 on Sat, 09 Feb 2013 19:37:08 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich wage mich an ein etwas größes Projekt. Jedoch ist mir nun direkt am Anfang ein Linkerfehler aufgetreten.</p>
<pre><code>//main.cpp
#include &quot;solarCoordinates.h&quot;

int main (char argc, char * argv[]) {
	int returnOfOFD = _CSC.GetOpenFileDialog();
	return 0;
}
</code></pre>
<pre><code>//solarCoordinates.h

#ifndef _solarCoordinateTransformation_h_
#define _solarCoordinateTransformation_h_

#include &lt;string&gt;

class solarCoordinateTransformation {

public:
	int GetOpenFileDialog();

private:
	std::string PathOfTheRoundupFile;

} _CSC;  //HIER MEINE ICH

#endif
</code></pre>
<pre><code>// solarCoordinates.cpp

#include &quot;solarCoordinates.h&quot;
#include &lt;Windows.h&gt;

int solarCoordinateTransformation::GetOpenFileDialog() {
	OPENFILENAME ofn;
	char path[1000];
	HWND hWnd = GetConsoleWindow();
	ZeroMemory(&amp;ofn, sizeof(ofn));
	ofn.lStructSize = sizeof(ofn);
	ofn.hwndOwner = hWnd;
	ofn.lpstrFile = path; 
	ofn.lpstrFile[0] = '\0'; 
	ofn.nMaxFile = sizeof(path); 
	ofn.lpstrFilter = &quot;Textdatei (*.txt)\0*.TXT\0&quot;; 
	ofn.nFilterIndex = 1; 
	ofn.lpstrFileTitle = NULL; 
	ofn.nMaxFileTitle = 0; 
	ofn.lpstrInitialDir = &quot;Z:&quot;;
	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
	BOOL successfulDialogBox = GetOpenFileName(&amp;ofn);
	if (successfulDialogBox == 1) {
		int returnFromMesasgeBox = MessageBox(hWnd,&quot;Bitte wählen Sie eine Datei aus.&quot;,&quot;Datei einlesen fehlgeschlagen!&quot;,MB_OKCANCEL|MB_ICONWARNING);
		if (returnFromMesasgeBox == 1) {
			_CSC.GetOpenFileDialog();
			return 0;
		} else {
			return -1;
		}
	}
	_CSC.PathOfTheRoundupFile = path;
	return 0;
}
</code></pre>
<p>Meine Frage ist, ob ich der Klasse, so wie ich es gemacht habe einen &quot;Standardnamen&quot; zu geben. Markiert in der Headerdatei.</p>
<p>2. Frage ist, warum diese Fehler auftreten.</p>
<pre><code>1&gt;solarCoordinates.obj : error LNK2005: &quot;class solarCoordinateTransformation _CSC&quot; (?_CSC@@3VsolarCoordinateTransformation@@A) ist bereits in main.obj definiert.
</code></pre>
<pre><code>1&gt;D:\Eigene Datein\Dropbox\rechner 2.1.1\Debug\rechner 2.1.1.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
</code></pre>
<p>Hat hier jemand eine Antwort?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2297461</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2297461</guid><dc:creator><![CDATA[Crysis_02]]></dc:creator><pubDate>Sat, 09 Feb 2013 19:37:08 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler LNK2005 und LNK1169 on Sat, 09 Feb 2013 20:00:40 GMT]]></title><description><![CDATA[<p>Nun der Linker hat natürlich Recht, deine Variable _CSC ist in jeder Übersetzungseinheit definiert, in der dein Header eingebunden wird. Man macht keine Definitionen in Headern.</p>
<p>Daher drei Gegenfragen:<br />
1. Ist dir klar, dass</p>
<pre><code>class foo { /* ... */ } bar;
</code></pre>
<p>eine Variable Namens bar vom Typ foo <strong>definiert</strong> (nicht deklariert!)?<br />
2. Ist dir klar, was der Unterschied zwischen Deklaration und Definition ist?<br />
3. Falls du beide Fragen mit &quot;Ja&quot; beantworten konntest: Was wolltest du damit erreichen?</p>
<p>P.S.: Noch so eine Sache: Der Bezeichner _CSC ist in doppeltem Sinne für die Implementierung reserviert. Du solltest ihn ändern. Reservierte Bezeichner sind:<br />
Reserved in any scope, including for use as implementation macros:<br />
In jedem Gültigkeitsbereich:<br />
- Bezeichner mit Unterstrich gefolgt von einem Großbuchstaben am Anfang (z.B. _CSC)<br />
- Bezeichner mit doppeltem Unterstrich, egal wo<br />
Im globalen Gültigkeitsbereich:<br />
- Bezeichner mit Unterstrich am Anfang (z.B. dein globales _CSC)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2297464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2297464</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Feb 2013 20:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler LNK2005 und LNK1169 on Sat, 09 Feb 2013 20:19:36 GMT]]></title><description><![CDATA[<p>Ok danke. Ich kann dir das mit ja beantworten.</p>
<p>Ich wollte damit erreichen, dass ich die private Variable innerhalb der Klasse benutzen kann, da ich die Klasse auch mal innerhald der Klasse aufrufe und sie halt jedes mal neu initialisieren muss. Dadurch bekomm ich dann werte wie 9,0000000E10 doer so.</p>
<p>Ggf. Löse ich es anders und rufe sie dann in der main hintereinander auf. Mal schaun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2297469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2297469</guid><dc:creator><![CDATA[Crysis_02]]></dc:creator><pubDate>Sat, 09 Feb 2013 20:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler LNK2005 und LNK1169 on Sat, 09 Feb 2013 20:23:18 GMT]]></title><description><![CDATA[<p>Crysis_02 schrieb:</p>
<blockquote>
<p>Ich wollte damit erreichen, dass ich die private Variable innerhalb der Klasse benutzen kann, da ich die Klasse auch mal innerhald der Klasse aufrufe und sie halt jedes mal neu initialisieren muss. Dadurch bekomm ich dann werte wie 9,0000000E10 doer so.</p>
</blockquote>
<p>Ich verstehe nicht, was du meinst. Dir scheint irgendwie nicht klar zu sein, was Klassen und Objekte sind und wie sie sich zueinander verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2297472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2297472</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 09 Feb 2013 20:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler LNK2005 und LNK1169 on Sat, 09 Feb 2013 21:14:04 GMT]]></title><description><![CDATA[<p>Eigentlich schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2297479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2297479</guid><dc:creator><![CDATA[Crysis_02]]></dc:creator><pubDate>Sat, 09 Feb 2013 21:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler LNK2005 und LNK1169 on Sat, 09 Feb 2013 22:44:43 GMT]]></title><description><![CDATA[<p>In solarCoordinates.h wird eine Variable namens _CSC definiert. solarCoordinates.h wird sowohl von main.cpp als auch von solarCoordinates.cpp #included, daher gibt es _CSC zwei mal. Das verwirrt den Linker und wahrscheinlich wolltest du nur ein einziges _CSC.<br />
Lösung:</p>
<pre><code>//solarCoordinates.h

#ifndef _solarCoordinateTransformation_h_
#define _solarCoordinateTransformation_h_

#include &lt;string&gt;

class solarCoordinateTransformation {

public:
    int GetOpenFileDialog();

private:
    std::string PathOfTheRoundupFile;

};// _CSC;  //HIER MEINE ICH
extern solarCoordinateTransformation _CSC;

#endif
</code></pre>
<p>Jetzt gibt es keine Variable _CSC mehr innerhalb von solarCoordinates.h, aber solarCoordinates.h behauptet, dass es irgendwo sowas gibt. Wenn du jetzt kompilierst sagt dir der Linker, dass er Objekt _CSC nicht finden kann.</p>
<pre><code>// solarCoordinates.cpp

#include &quot;solarCoordinates.h&quot;
#include &lt;Windows.h&gt;

//Kram
solarCoordinateTransformation _CSC;
</code></pre>
<p>Jetzt gibt es _CSC wieder, genau ein Mal und sowohl solarCoordinates.cpp als auch main.cpp benutzen das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2297488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2297488</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Sat, 09 Feb 2013 22:44:43 GMT</pubDate></item><item><title><![CDATA[Reply to Linkerfehler LNK2005 und LNK1169 on Sun, 10 Feb 2013 05:15:55 GMT]]></title><description><![CDATA[<p>Bei der Gelegenheit möchte ich auch noch &quot;static initialization order fiasco&quot; erwähnen, was einem bekannt sein sollte, wenn man globale Objekte (statischer Speicher) anlegt, die dynamisch initialisiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2297501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2297501</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 10 Feb 2013 05:15:55 GMT</pubDate></item></channel></rss>