Linker-Errors bei globalen Variablen



  • Hallo, ich konnte es zwar nicht glauben, aber scheinbar gibts es zu folgendem Thema noch keinen Thread hier. (Ich habe nach Globale AND Variablen gesucht + mehrere Abarten dieser Wörter 😉 )

    Folgendes Problem. Ein Projekt benötigt mehrere globale Variablen, die ich in einer header-Datei globals.h deklariere. Damit ich diese Variablen in verschiedensten source-files benutzen kann, muss ich sie dort mit "extern <type> <name>" bekannt machen, soweit stimmts noch oder? Kompilieren klappt auch soweit ganz gut, allerdings beschwert sich dann der Linker über mehrfach-Definitionen, Beispiel:

    // globals.h
    HWND g_hMainWnd;				// MainWindow WindowHandle;
    
    // window.cpp
    #include "globals.h"
    extern HWND g_hMainWnd;
    
    window.obj : error LNK2005: "struct HWND__ * g_hMainWnd" (?g_hMainWnd@@3PAUHWND__@@A) already defined in main.obj
    

    In der main.cpp wird g_hMainWnd nicht verwendet aber auch die "globals.h" eingebunden.

    Ich benutze MS Visual Studio 6.0. Was mache ich falsch?



  • du machst es genau falsch rum. das extern muss in den header 😉



  • *schäm*

    Funktioniert wunderbar, vielen Dank 😉


Anmelden zum Antworten