<?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[Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!°]]></title><description><![CDATA[<p>Hoi alle zusammen,</p>
<p>Also ich habe in einer Datei (header.h) einige Variablen definiert, welche in anderen Cpp-Dateien gebraucht werden. Dazu habe ich in jeder Cpp-Datei diesen Header inkludiert... Das Problem ist, das mein Compiler beim Compilieren mir folgendes anzeigt:</p>
<p>Microsoft Visual C++ 6.0 schrieb:</p>
<blockquote>
<p>--------------------Konfiguration: CrossXChat - Win32 Release--------------------<br />
Kompilierung läuft...<br />
LangDlgProc.cpp<br />
Main.cpp<br />
Linker-Vorgang läuft...<br />
Main.obj : error LNK2005: &quot;struct HWND__ * g_hwndMain&quot; (?g_hwndMain@@3PAUHWND__@@A) bereits in LangDlgProc.obj definiert<br />
Main.obj : error LNK2005: &quot;struct HINSTANCE__ * g_hInst&quot; (?g_hInst@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert<br />
Main.obj : error LNK2005: &quot;struct HINSTANCE__ * g_hmDllLanguage&quot; (?g_hmDllLanguage@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert<br />
Main.obj : warning LNK4006: &quot;struct HWND__ * g_hwndMain&quot; (?g_hwndMain@@3PAUHWND__@@A) bereits in LangDlgProc.obj definiert; zweite Definition wird ignoriert<br />
Main.obj : warning LNK4006: &quot;struct HINSTANCE__ * g_hInst&quot; (?g_hInst@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert; zweite Definition wird ignoriert<br />
Main.obj : warning LNK4006: &quot;struct HINSTANCE__ * g_hmDllLanguage&quot; (?g_hmDllLanguage@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert; zweite Definition wird ignoriert<br />
Bibliothek Release/CrossXChat.lib und Objekt Release/CrossXChat.exp wird erstellt<br />
Release/CrossXChat.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden<br />
Fehler beim Ausführen von link.exe.</p>
<p>CrossXChat.exe - 4 Fehler, 3 Warnung(en)</p>
</blockquote>
<p>Das ja heißen müsste, das das 'zu oft definiert bzw inkludiert wurde...wie kann ich das jetzt lösen/umgehen ?</p>
<p>PS_1: so sieht mein Header aus:<br />
GlobalAfx.h</p>
<pre><code class="language-cpp">#ifndef _GLOBAL_AFX_H_
#define _GLOBAL_AFX_H_

/* ======================= System Module Dependencies ========================== */

#include &lt;Windows.h&gt;

/* ============================= Global Variables ============================== */

HMODULE		g_hmDllLanguage;
HINSTANCE	g_hInst;
HWND		g_hwndMain;

#endif /* _GLOBAL_AFX_H_ */
</code></pre>
<p>PS_2: ist zwar WinAPI, aber die Frage bezieht sich auf C++ <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>VIELEN DANK schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149874/eine-variable-mehrere-dateien-die-diese-verwenden-gt-problem</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 11:35:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149874.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Jun 2006 19:29:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sat, 10 Jun 2006 19:29:25 GMT]]></title><description><![CDATA[<p>Hoi alle zusammen,</p>
<p>Also ich habe in einer Datei (header.h) einige Variablen definiert, welche in anderen Cpp-Dateien gebraucht werden. Dazu habe ich in jeder Cpp-Datei diesen Header inkludiert... Das Problem ist, das mein Compiler beim Compilieren mir folgendes anzeigt:</p>
<p>Microsoft Visual C++ 6.0 schrieb:</p>
<blockquote>
<p>--------------------Konfiguration: CrossXChat - Win32 Release--------------------<br />
Kompilierung läuft...<br />
LangDlgProc.cpp<br />
Main.cpp<br />
Linker-Vorgang läuft...<br />
Main.obj : error LNK2005: &quot;struct HWND__ * g_hwndMain&quot; (?g_hwndMain@@3PAUHWND__@@A) bereits in LangDlgProc.obj definiert<br />
Main.obj : error LNK2005: &quot;struct HINSTANCE__ * g_hInst&quot; (?g_hInst@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert<br />
Main.obj : error LNK2005: &quot;struct HINSTANCE__ * g_hmDllLanguage&quot; (?g_hmDllLanguage@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert<br />
Main.obj : warning LNK4006: &quot;struct HWND__ * g_hwndMain&quot; (?g_hwndMain@@3PAUHWND__@@A) bereits in LangDlgProc.obj definiert; zweite Definition wird ignoriert<br />
Main.obj : warning LNK4006: &quot;struct HINSTANCE__ * g_hInst&quot; (?g_hInst@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert; zweite Definition wird ignoriert<br />
Main.obj : warning LNK4006: &quot;struct HINSTANCE__ * g_hmDllLanguage&quot; (?g_hmDllLanguage@@3PAUHINSTANCE__@@A) bereits in LangDlgProc.obj definiert; zweite Definition wird ignoriert<br />
Bibliothek Release/CrossXChat.lib und Objekt Release/CrossXChat.exp wird erstellt<br />
Release/CrossXChat.exe : fatal error LNK1169: Ein oder mehrere mehrfach definierte Symbole gefunden<br />
Fehler beim Ausführen von link.exe.</p>
<p>CrossXChat.exe - 4 Fehler, 3 Warnung(en)</p>
</blockquote>
<p>Das ja heißen müsste, das das 'zu oft definiert bzw inkludiert wurde...wie kann ich das jetzt lösen/umgehen ?</p>
<p>PS_1: so sieht mein Header aus:<br />
GlobalAfx.h</p>
<pre><code class="language-cpp">#ifndef _GLOBAL_AFX_H_
#define _GLOBAL_AFX_H_

/* ======================= System Module Dependencies ========================== */

#include &lt;Windows.h&gt;

/* ============================= Global Variables ============================== */

HMODULE		g_hmDllLanguage;
HINSTANCE	g_hInst;
HWND		g_hwndMain;

#endif /* _GLOBAL_AFX_H_ */
</code></pre>
<p>PS_2: ist zwar WinAPI, aber die Frage bezieht sich auf C++ <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>VIELEN DANK schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075289</guid><dc:creator><![CDATA[Frage!]]></dc:creator><pubDate>Sat, 10 Jun 2006 19:29:25 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sat, 10 Jun 2006 19:35:47 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Mit dem Schlüsselwort extern</p>
<pre><code class="language-cpp">#ifndef _GLOBAL_AFX_H_
#define _GLOBAL_AFX_H_

/* ======================= System Module Dependencies ========================== */

#include &lt;Windows.h&gt;

/* ============================= Global Variables ============================== */

/// Definition
extern HMODULE        g_hmDllLanguage;
extern HINSTANCE    g_hInst;
extern HWND        g_hwndMain;

#endif /* _GLOBAL_AFX_H_ */
</code></pre>
<p>und in der dazugehörenden CPP-Datei</p>
<pre><code class="language-cpp">...
/// Deklaration und Initialisierung
HMODULE        g_hmDllLanguage;
HINSTANCE    g_hInst;
HWND        g_hwndMain;
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075290</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 10 Jun 2006 19:35:47 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sat, 10 Jun 2006 20:17:13 GMT]]></title><description><![CDATA[<p>jau, vielen dank, perfekt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075303</guid><dc:creator><![CDATA[Frage!]]></dc:creator><pubDate>Sat, 10 Jun 2006 20:17:13 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sat, 10 Jun 2006 23:59:38 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich würd dir noch empfehlen, das nicht inner Header zu machen...<br />
Das kann schnell zu Fehlern führen...<br />
Lieber so:</p>
<p>Main.cpp</p>
<pre><code class="language-cpp">int   iSample;
char  szBuffer;
long  lNumber;
// initialisieren und verwenden
// ...
</code></pre>
<p>Demo.cpp</p>
<pre><code class="language-cpp">extern int   iSample;
extern char  szBuffer;
extern long  lNumber;
// verwenden
// ...
</code></pre>
<p>...nur so als kleiner Nachtrag <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/1075360</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075360</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sat, 10 Jun 2006 23:59:38 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 08:19:08 GMT]]></title><description><![CDATA[<p>Woher hast Du denn das bitte?</p>
<p>Die Variablen extern in einem Header zu deklarieren und in einem Codefile einmal zu definieren ist der einzig gangbare Weg um Fehler zu vermeiden, Deine Methode ist weit fehlerträchtiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075398</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 11 Jun 2006 08:19:08 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 09:01:13 GMT]]></title><description><![CDATA[<p>hmm also bei mir hats die Kombination gemacht...ich hab extern jetzt verwendet, aber -wie CodeFinder gesagt hat- ohne Header, denn mit hats nicht funktioniert (gleiche Compiler-Fehler)...und so funktioniert das prächtig!<br />
Also Dank sowohl an akari und CodeFinder <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10648">@LordJaxom</a>:<br />
Zu welchen Fehlern kann denn das deiner Meinung nach führen...hast du vllt. n Beispiel ?</p>
<p>und danke nochmal an alle <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>cya</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075433</guid><dc:creator><![CDATA[Frage!]]></dc:creator><pubDate>Sun, 11 Jun 2006 09:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 09:09:06 GMT]]></title><description><![CDATA[<p>Ganz einfach:<br />
Normalerweise definiere ich die Variablen in einer Übersetzungseinheit und packe gleich die Extern-Deklaration in den Header. Wenn ich jetzt an einer dieser Stellen den Datentyp ändere und an der anderen nicht, gibt es einen Fehler in eben jener ÜE.</p>
<p>Wenn ich in jedes Codefile die Extern-Deklaration packe, und dann den Datentyp einer dieser Variablen ändern will,<br />
a) muss ich das an mehr als zwei Stellen tun (nämlich in JEDEM Codefile wo dies verwendet wird)<br />
b) wird mich der Compiler nicht warnen wenn ich eine Stelle vergesse.</p>
<p>Davon ab, ist Code per Copy&amp;Paste von einem Codefile ins andere zu befördern sehr sehr unschön <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/1075439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075439</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 11 Jun 2006 09:09:06 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 09:19:29 GMT]]></title><description><![CDATA[<p>Hi LordJaxom...</p>
<p>Also das hab ich ja versucht...:</p>
<blockquote>
<p>Ganz einfach:<br />
Normalerweise definiere ich die Variablen in einer Übersetzungseinheit und packe gleich die Extern-Deklaration in den Header. Wenn ich jetzt an einer dieser Stellen den Datentyp ändere und an der anderen nicht, gibt es einen Fehler in eben jener ÜE.</p>
</blockquote>
<p>Aber es hat die gleichen Fehler verursacht, wie ich oben schon gepostet hab...<br />
Kannst du mir vllt. n kleinen Beispielcode schreiben der das demonstriert...wär echt nett!</p>
<p>thx schonmal! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075446</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075446</guid><dc:creator><![CDATA[Frage!]]></dc:creator><pubDate>Sun, 11 Jun 2006 09:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 09:22:35 GMT]]></title><description><![CDATA[<p>Naja wenn Du Dich nicht vertippt hast ist es genau akaris Beispiel:</p>
<p>Im Header</p>
<pre><code class="language-cpp">#ifndef _GLOBAL_AFX_H_
#define _GLOBAL_AFX_H_

/* ======================= System Module Dependencies ========================== */

#include &lt;Windows.h&gt;

/* ============================= Global Variables ============================== */

/// Definition
extern HMODULE        g_hmDllLanguage;
extern HINSTANCE    g_hInst;
extern HWND        g_hwndMain;

#endif /* _GLOBAL_AFX_H_ */
</code></pre>
<p>Und in <strong>einem</strong> (beliebigen, falls es keine global_afx.cpp gibt) .cpp-File</p>
<pre><code class="language-cpp">HMODULE g_hmDllLanguage;
HINSTANCE g_hInst;
HWND g_hwndMain;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1075451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075451</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 11 Jun 2006 09:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 09:31:02 GMT]]></title><description><![CDATA[<p>Aber ich muss doch<br />
Erst die Header inkludieren, um dann die Vars definieren oder ?</p>
<pre><code class="language-cpp">// ...
#include &quot;GlobalAfx.h&quot;
// ...
HMODULE    g_hmDllLanguage;
HINSTANCE  g_hInst;
HWND       g_hwndMain;
// ...
</code></pre>
<p>so, oder ? ...<br />
das hab ich gemacht, das hat aber nicht funktioniert...und die Compilermeldungen, haben nicht auf einen Tippfehler hingeweisen ( <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Bei einem: &quot;Ein oder mehrere mehrfach definierte Symbole gefunden&quot; ...ist ja keine Tippfehler, sondern was generelles zu 'vermuten' oder ?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075457</guid><dc:creator><![CDATA[Frage!]]></dc:creator><pubDate>Sun, 11 Jun 2006 09:31:02 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 09:37:53 GMT]]></title><description><![CDATA[<p>Du solltest erst den Header inkludieren, um o.a. Problem aus dem Weg zu gehen. Ansonsten kann es höchstens sein dass nicht alles neucompiliert wurde. Wenn die Dinger nur in <strong>einer</strong> cpp-Datei ohne extern stehen, gibt es keine multiple symbols mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075464</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Sun, 11 Jun 2006 09:37:53 GMT</pubDate></item><item><title><![CDATA[Reply to Eine Variable, mehrere Dateien, die diese verwenden -&amp;gt; Problem°!° on Sun, 11 Jun 2006 11:03:26 GMT]]></title><description><![CDATA[<p>LordJaxom  schrieb:</p>
<blockquote>
<p>Woher hast Du denn das bitte?</p>
</blockquote>
<p>...<br />
Jo, das war prinzipiell nur n Zitat aus nem anderen Forum, habs mal ausprobiert (hätte ich vllt. mal vorher machen solln^^ -sry-) und LordJaxom hat Recht...</p>
<p>es ist besser das inner Header zu machen...ALSO nochmal resümieren:</p>
<p>Header.h:</p>
<pre><code class="language-cpp">#ifndef _HEADER_H_
#define _HEADER_H_

extern int   iSample;
extern long  lSample;
extern char  szBuffer[100];

#endif /* _HEADER_H_ */
</code></pre>
<p>Main.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Header.h&quot;

int   iSample;
long  lSample;
char  szBuffer[100];

int main()
{
    // externe, globale Variablen initialisieren/verwenden:
    // ...
    // Beispiel:
    iSample = 23;
    lSample = 789;
    strcpy(szBuffer, &quot;Hallo&quot;);
    return (0);
}
</code></pre>
<p>in weiteren möglichen Dateien:<br />
z.B.:</p>
<p>Demo.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Header.h&quot;
// hier verwenden...
// ...
// Beispiel:
iSample = 45;
lSample = 899;
strcpy(szBuffer, &quot;Welt!&quot;);
</code></pre>
<p>so...hoffe das war korrekt <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>PS: Hab den Code <strong>NICHT</strong> getestet, aber er sollte ja nur das Prinzip demonstrieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075506</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Sun, 11 Jun 2006 11:03:26 GMT</pubDate></item></channel></rss>