g_pMusicManager ist bereits in Direct3DGraphics.obj definiert



  • Hi

    Ich bin immer noch am Programmieren des Sounds. Nun habe ich das andere bereits geschafft. Doch nun wenn ich zwei Globale Variablen erzeuge, kommen mehrere Fehlermeldungen. Ich erzeuge folgende zwei globale Variablen:

    CMusicManager * g_pMusicManager = NULL;
    CMusicSegment * g_pBackgroundMusic = NULL;
    

    Es kommen folgende Fehler:

    1>------ Erstellen gestartet: Projekt: Second Chance Game, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>SecondChance.cpp
    1>Verknüpfen...
    1>InitD3D.obj : error LNK2005: "class CMusicManager * g_pMusicManager" (?g_pMusicManager@@3PAVCMusicManager@@A) ist bereits in Direct3DGraphics.obj definiert.
    1>InitD3D.obj : error LNK2005: "class CMusicSegment * g_pBackgroundMusic" (?g_pBackgroundMusic@@3PAVCMusicSegment@@A) ist bereits in Direct3DGraphics.obj definiert.
    1>SecondChance.obj : error LNK2005: "class CMusicManager * g_pMusicManager" (?g_pMusicManager@@3PAVCMusicManager@@A) ist bereits in Direct3DGraphics.obj definiert.
    1>SecondChance.obj : error LNK2005: "class CMusicSegment * g_pBackgroundMusic" (?g_pBackgroundMusic@@3PAVCMusicSegment@@A) ist bereits in Direct3DGraphics.obj definiert.
    1>Sound.obj : error LNK2005: "class CMusicManager * g_pMusicManager" (?g_pMusicManager@@3PAVCMusicManager@@A) ist bereits in Direct3DGraphics.obj definiert.
    1>Sound.obj : error LNK2005: "class CMusicSegment * g_pBackgroundMusic" (?g_pBackgroundMusic@@3PAVCMusicSegment@@A) ist bereits in Direct3DGraphics.obj definiert.
    1>C:\Dokumente und Einstellungen\Patrick\Eigene Dateien\Visual Studio 2008\Projects\Second Chance Game\Debug\Second Chance Game.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
    1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Patrick\Eigene Dateien\Visual Studio 2008\Projects\Second Chance Game\Second Chance Game\Debug\BuildLog.htm" gespeichert.
    1>Second Chance Game - 7 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Kann mir jemand helfen?

    Gruss Patrick



  • Das darf nicht in einer Headerdatei stehen:

    CMusicManager * g_pMusicManager = NULL;
    CMusicSegment * g_pBackgroundMusic = NULL;
    

    Schreib das in eine cpp Datei.

    In die Headerdatei schreibst du:

    extern CMusicManager * g_pMusicManager = NULL;
    extern CMusicSegment * g_pBackgroundMusic = NULL;
    

    um es schöner zu machen verwende das Singleton Pattern

    1. Such dir artikel zu verwendung von "extern" und versuche den Sinn dahinter zu verstehen
    2. Schau dir mal das Singleton Pattern an (wird z. B. in der Artikelsektion unter Entwurfsmuster beschrieben)


Anmelden zum Antworten