<?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[Mindestens ein mehrfach definiertes Symbol]]></title><description><![CDATA[<p>Hallo,<br />
ich weiss, das ist ein Standartfehler.<br />
Ich habe auch schon das ganze Forum mit Google durchsucht. Habe alles, was gesagt wurde ausprobiert, nichts ändert sich.<br />
Ich arbeite mit Visual Studio 10 EE.</p>
<p>Ich habe 4 Dateien:</p>
<p>main.h</p>
<pre><code class="language-cpp">#ifndef MAIN_H
#define MAIN_H

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

#include &quot;framework.h&quot;

#endif
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;main.h&quot;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) 
{
	if(FAILED(sys_init()))
	{
		MessageBox(NULL, L&quot;Framework konnte nicht initialisiert werden.&quot;, L&quot;Error: Framework&quot;, MB_OK);
		return 0;
	}
	while(elfRun())
	{
		if(FAILED(sys_update()))
		{
			MessageBox(NULL, L&quot;Framework konnte nicht geupdatet werden.&quot;, L&quot;Error: Framework&quot;, MB_OK);
			return 0;
		}
	}
	return 0;
}
</code></pre>
<p>framework.h</p>
<pre><code class="language-cpp">#ifndef FRAMEWORK_H
#define FRAMEWORK_H

#include &lt;Windows.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;

#include &quot;blendelf.h&quot;

HRESULT sys_init();
HRESULT sys_update();

char char_frm_fps[255];

int int_frm_fps;

elf_handle eh_gui_frm_gui;
elf_handle eh_font_frm_1;
elf_handle eh_lab_frm_fps;

#endif
</code></pre>
<p>framework.cpp</p>
<pre><code class="language-cpp">#include &quot;framework.h&quot;

/////////////////////////////////////////////////////////////////////////////////////////
//Initializes the framework.
//
//PARAMETERS: No parameters.
//RETURNS: HRESULT, if the function succeeded.
/////////////////////////////////////////////////////////////////////////////////////////
HRESULT sys_init()
{
	if(!elfInitWithConfig(&quot;config.txt&quot;))
		return E_FAIL;
	eh_gui_frm_gui=elfCreateGui();
	elfSetGui(eh_gui_frm_gui);
	eh_font_frm_1=elfCreateFontFromFile(&quot;impact.ttf&quot;, 12);
	eh_lab_frm_fps=elfCreateLabel(&quot;eh_lab_frm_fps&quot;);
	elfSetLabelFont(eh_lab_frm_fps, eh_font_frm_1);
	elfSetLabelText(eh_lab_frm_fps, &quot;FPS: 0&quot;);
	elfSetGuiObjectPosition(eh_lab_frm_fps, 10, 10);
	elfAddGuiObject(eh_gui_frm_gui, eh_lab_frm_fps);
	elfHideMouse(true);
	return S_OK;
}

/////////////////////////////////////////////////////////////////////////////////////////
//Updates the framework.
//
//PARAMETERS: No parameters.
//RETURNS: HRESULT, if the function succeeded.
/////////////////////////////////////////////////////////////////////////////////////////
HRESULT sys_update()
{
	int_frm_fps=elfGetFps();
	sprintf(char_frm_fps,&quot;FPS: %d&quot;,int_frm_fps);
	elfSetLabelText(eh_lab_frm_fps,char_frm_fps);
	return S_OK;
}
</code></pre>
<p>Und ich bekomme diese errors:</p>
<blockquote>
<p>1&gt;------ Erstellen gestartet: Projekt: BlendELF, Konfiguration: Debug Win32 ------<br />
1&gt; main.cpp<br />
1&gt;c:\projects\blendelf\blendelf\blendelf.h(263): warning C4522: 'elf_handle': Mehrere Zuweisungsoperatoren angegeben<br />
1&gt;main.obj : error LNK2005: &quot;int int_frm_fps&quot; (?int_frm_fps@@3HA) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;char * char_frm_fps&quot; (?char_frm_fps@@3PADA) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;class elf_handle eh_font_frm_1&quot; (?eh_font_frm_1@@3Velf_handle@@A) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;class elf_handle eh_gui_frm_gui&quot; (?eh_gui_frm_gui@@3Velf_handle@@A) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;class elf_handle eh_lab_frm_fps&quot; (?eh_lab_frm_fps@@3Velf_handle@@A) ist bereits in framework.obj definiert.<br />
1&gt;C:\Projects\BlendELF\Debug\BlendELF.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.<br />
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/topic/269681/mindestens-ein-mehrfach-definiertes-symbol</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 03:29:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269681.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Jun 2010 16:46:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 16:46:32 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich weiss, das ist ein Standartfehler.<br />
Ich habe auch schon das ganze Forum mit Google durchsucht. Habe alles, was gesagt wurde ausprobiert, nichts ändert sich.<br />
Ich arbeite mit Visual Studio 10 EE.</p>
<p>Ich habe 4 Dateien:</p>
<p>main.h</p>
<pre><code class="language-cpp">#ifndef MAIN_H
#define MAIN_H

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

#include &quot;framework.h&quot;

#endif
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;main.h&quot;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) 
{
	if(FAILED(sys_init()))
	{
		MessageBox(NULL, L&quot;Framework konnte nicht initialisiert werden.&quot;, L&quot;Error: Framework&quot;, MB_OK);
		return 0;
	}
	while(elfRun())
	{
		if(FAILED(sys_update()))
		{
			MessageBox(NULL, L&quot;Framework konnte nicht geupdatet werden.&quot;, L&quot;Error: Framework&quot;, MB_OK);
			return 0;
		}
	}
	return 0;
}
</code></pre>
<p>framework.h</p>
<pre><code class="language-cpp">#ifndef FRAMEWORK_H
#define FRAMEWORK_H

#include &lt;Windows.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;

#include &quot;blendelf.h&quot;

HRESULT sys_init();
HRESULT sys_update();

char char_frm_fps[255];

int int_frm_fps;

elf_handle eh_gui_frm_gui;
elf_handle eh_font_frm_1;
elf_handle eh_lab_frm_fps;

#endif
</code></pre>
<p>framework.cpp</p>
<pre><code class="language-cpp">#include &quot;framework.h&quot;

/////////////////////////////////////////////////////////////////////////////////////////
//Initializes the framework.
//
//PARAMETERS: No parameters.
//RETURNS: HRESULT, if the function succeeded.
/////////////////////////////////////////////////////////////////////////////////////////
HRESULT sys_init()
{
	if(!elfInitWithConfig(&quot;config.txt&quot;))
		return E_FAIL;
	eh_gui_frm_gui=elfCreateGui();
	elfSetGui(eh_gui_frm_gui);
	eh_font_frm_1=elfCreateFontFromFile(&quot;impact.ttf&quot;, 12);
	eh_lab_frm_fps=elfCreateLabel(&quot;eh_lab_frm_fps&quot;);
	elfSetLabelFont(eh_lab_frm_fps, eh_font_frm_1);
	elfSetLabelText(eh_lab_frm_fps, &quot;FPS: 0&quot;);
	elfSetGuiObjectPosition(eh_lab_frm_fps, 10, 10);
	elfAddGuiObject(eh_gui_frm_gui, eh_lab_frm_fps);
	elfHideMouse(true);
	return S_OK;
}

/////////////////////////////////////////////////////////////////////////////////////////
//Updates the framework.
//
//PARAMETERS: No parameters.
//RETURNS: HRESULT, if the function succeeded.
/////////////////////////////////////////////////////////////////////////////////////////
HRESULT sys_update()
{
	int_frm_fps=elfGetFps();
	sprintf(char_frm_fps,&quot;FPS: %d&quot;,int_frm_fps);
	elfSetLabelText(eh_lab_frm_fps,char_frm_fps);
	return S_OK;
}
</code></pre>
<p>Und ich bekomme diese errors:</p>
<blockquote>
<p>1&gt;------ Erstellen gestartet: Projekt: BlendELF, Konfiguration: Debug Win32 ------<br />
1&gt; main.cpp<br />
1&gt;c:\projects\blendelf\blendelf\blendelf.h(263): warning C4522: 'elf_handle': Mehrere Zuweisungsoperatoren angegeben<br />
1&gt;main.obj : error LNK2005: &quot;int int_frm_fps&quot; (?int_frm_fps@@3HA) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;char * char_frm_fps&quot; (?char_frm_fps@@3PADA) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;class elf_handle eh_font_frm_1&quot; (?eh_font_frm_1@@3Velf_handle@@A) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;class elf_handle eh_gui_frm_gui&quot; (?eh_gui_frm_gui@@3Velf_handle@@A) ist bereits in framework.obj definiert.<br />
1&gt;main.obj : error LNK2005: &quot;class elf_handle eh_lab_frm_fps&quot; (?eh_lab_frm_fps@@3Velf_handle@@A) ist bereits in framework.obj definiert.<br />
1&gt;C:\Projects\BlendELF\Debug\BlendELF.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.<br />
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1919011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919011</guid><dc:creator><![CDATA[Razoron]]></dc:creator><pubDate>Tue, 29 Jun 2010 16:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 16:50:54 GMT]]></title><description><![CDATA[<p>Der Fehler liegt in dem File &quot;framework.h&quot;</p>
<p>Schau da mal ganz genau, ob du da nicht etwas definierst! Du hast da exakt 5 Definitionen drin. Der Compiler sagt dir sogar welche das sind. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1919013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919013</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 29 Jun 2010 16:50:54 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 17:40:02 GMT]]></title><description><![CDATA[<p>Ja, ich weiss, welche. Nur warum darf man denn keine globalen Variablen in dem Header definieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919034</guid><dc:creator><![CDATA[Razoron]]></dc:creator><pubDate>Tue, 29 Jun 2010 17:40:02 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 17:49:23 GMT]]></title><description><![CDATA[<p>Weil es dann mehrere Definitionen des gleichen Objektes in verschiedenen Quelldateien gibt und welche soll dann benutzt werden?<br />
Oder um ein Stichwort für google zu geben: ODR (one definition rule).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919040</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 29 Jun 2010 17:49:23 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 17:56:17 GMT]]></title><description><![CDATA[<p>Jedes Objekt wird doch nur einmal in der framework.h definiert. Oder seh ich da was falsch?<br />
In der framework.c werden die Objekte/Variablen doch nur angewandt, nicht definiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919042</guid><dc:creator><![CDATA[Razoron]]></dc:creator><pubDate>Tue, 29 Jun 2010 17:56:17 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 17:55:10 GMT]]></title><description><![CDATA[<p>Es wird nur in einer Datei definiert ja, aber die Datei wird in mehreren Quelldateien inkludiert.<br />
framework.cpp -&gt; framework.h<br />
main.cpp -&gt; main.h -&gt; framework.h</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919043</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 29 Jun 2010 17:55:10 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 18:00:31 GMT]]></title><description><![CDATA[<p>Aah, okay, das klappt schonmal. Nur wenn ich jetzt aus der main.h das<br />
#include &quot;framework.h&quot; rausnehme kommt, O Wunder, dass er die Funktionen<br />
&quot;sys_init&quot; und &quot;sys_update&quot; nicht kennt. Müsste ich also Prototypen definieren, oder gibt es da einen anderen Weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919046</guid><dc:creator><![CDATA[Razoron]]></dc:creator><pubDate>Tue, 29 Jun 2010 18:00:31 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 18:03:30 GMT]]></title><description><![CDATA[<p>Razoron schrieb:</p>
<blockquote>
<p>Nur wenn ich jetzt aus der main.h das<br />
#include &quot;framework.h&quot; rausnehme kommt, O Wunder, dass er die Funktionen<br />
&quot;sys_init&quot; und &quot;sys_update&quot; nicht kennt.</p>
</blockquote>
<p>Das ist ja auch der falsche Ansatz. Du musst die Definition dieser Variablen aus dem Header herausnehmen. Man definiert keine Variablen in Headern. Stichwort extern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919047</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 29 Jun 2010 18:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 18:07:44 GMT]]></title><description><![CDATA[<p>Also doch auch wieder aus der main.h framework.h inkludieren und dann die Variablen in die framework.cpp packen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919048</guid><dc:creator><![CDATA[Razoron]]></dc:creator><pubDate>Tue, 29 Jun 2010 18:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Tue, 29 Jun 2010 21:48:15 GMT]]></title><description><![CDATA[<p>Razoron schrieb:</p>
<blockquote>
<p>Also doch auch wieder aus der main.h framework.h inkludieren und dann die Variablen in die framework.cpp packen?</p>
</blockquote>
<p>Jein. Du musst, damit du von wo andesrst Zugriff auf die Variable haben willst den Namen bekannt machen und das geschieht durch das Schlüsselwort <code>extern</code> . Damit kannst du eine Variablendeklaration in einen Header bringen. (Das ist dann so etwas, wie eine Funktionsdeklaration).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919137</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 29 Jun 2010 21:48:15 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Wed, 30 Jun 2010 06:01:10 GMT]]></title><description><![CDATA[<p>Also müsste es in der framework.h</p>
<pre><code class="language-cpp">extern char char_frm_fps[255];

extern int int_frm_fps;

extern elf_handle eh_gui_frm_gui;
extern elf_handle eh_font_frm_1;
extern elf_handle eh_lab_frm_fps;
</code></pre>
<p>heissen.<br />
Ich dachte &quot;extern&quot; zeigt dann, wenn es schon einmal aufgelöst wurde, auf die bereits deklarierte Variable.<br />
Ich bekomme dann</p>
<pre><code class="language-cpp">1&gt;framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;class elf_handle eh_lab_frm_fps&quot; (?eh_lab_frm_fps@@3Velf_handle@@A)&quot;.
1&gt;framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;class elf_handle eh_font_frm_1&quot; (?eh_font_frm_1@@3Velf_handle@@A)&quot;.
1&gt;framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;class elf_handle eh_gui_frm_gui&quot; (?eh_gui_frm_gui@@3Velf_handle@@A)&quot;.
1&gt;framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;char * char_frm_fps&quot; (?char_frm_fps@@3PADA)&quot;.
1&gt;framework.obj : error LNK2001: Nicht aufgelöstes externes Symbol &quot;&quot;int int_frm_fps&quot; (?int_frm_fps@@3HA)&quot;.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1919199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919199</guid><dc:creator><![CDATA[Razoron]]></dc:creator><pubDate>Wed, 30 Jun 2010 06:01:10 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Wed, 30 Jun 2010 06:09:06 GMT]]></title><description><![CDATA[<p>Da fehlen noch die Definitionen in der cpp.<br />
Das extern sagt dem Compiler nur, dass es diese Variablen gibt. Definieren musst du sie schon noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919205</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 30 Jun 2010 06:09:06 GMT</pubDate></item><item><title><![CDATA[Reply to Mindestens ein mehrfach definiertes Symbol on Wed, 30 Jun 2010 07:00:16 GMT]]></title><description><![CDATA[<p>Aj, okay, danke an euch alle, habe zum ersten mal mit Headern richtig gearbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1919219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1919219</guid><dc:creator><![CDATA[Razoron]]></dc:creator><pubDate>Wed, 30 Jun 2010 07:00:16 GMT</pubDate></item></channel></rss>