Linker-Fehler 2019,2001 bzw. C3861



  • Hallo Zusammen!
    Nachdem ich mittlerweile Stundenlang gegooglet habe und im Quellcode rum gebastelt, schreib ich den Eintrag in der Hoffnung, dass es noch kein Thread dazu gibt 😋

    Zu meinem Projekt:
    Ich versuche mit Hilfe des Buches "Spieleprogrammierung mit DirectX und C++" von Ulrich Kaiser ein 2D-Spiel mit DirectX zu Programmieren. Das Windowsfenster ist soweit fertig und jetzt soll die Klasse zur Implementierung der Sounds geschrieben werden.
    Zum Aufbau meines Codes:
    Ich hab (natürlich) eine main.cpp in der Sounds implementriert werden sollen, sowie folgendende von der Buch kopierten Hilfsdateien:
    dsutil.h und dsutil.cpp.
    In der main.cpp wird nun wie folgt eine Klasse Sounds erstellt, welche die Funktion SoundManager aus der dsutil nutzt:

    class sounds
    {
    	private:
    		CSoundManager smgr;
    		CSound *snd[anzahl_sounds];
    	public:
    		int on;
    		sounds ();
    		int init( HWND hWnd);
    		void play( int snr);
    		~sounds();
    };
    
    sounds::sounds()
    {
    	int i;
    
    	for (i = 0; i<anzahl_sounds; i++)
    		snd[i] = 0;
    
    	on = 1;
    }
    

    Ich habe die DxErr8.lib eingebunden und erhielt folgende Fehler:

    code]1>Dsutil.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXTraceA@20" in Funktion ""public: long __thiscall CSoundManager::Initialize(struct HWND__ *,unsigned long,unsigned long,unsigned long,unsigned long)" (?Initialize@CSoundManager@@QAEJPAUHWND__@@KKKK@Z)".
    1>Dsutil.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DirectSoundCreate8@12" in Funktion ""public: long __thiscall CSoundManager::Initialize(struct HWND__ *,unsigned long,unsigned long,unsigned long,unsigned long)" (?Initialize@CSoundManager@@QAEJPAUHWND__@@KKKK@Z)".
    1>Dsutil.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_IID_IDirectSound3DListener".
    1>Dsutil.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_IID_IDirectSoundNotify".
    1>Dsutil.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_IID_IDirectSound3DBuffer".
    

    Da ich davon ausgegangen bin, dass es sich um ein Lib-problem habdeln müsste, hab ich die DxErr9.lib eingebunden, dann aber folgende Fehler erhalten:

    1>c:\users\marcus\documents\visual studio 2008\projects\tetris\tetris\dsutil.cpp(414) : error C3861: "DXTRACE_ERR_NOMSGBOX": Bezeichner wurde nicht gefunden.
    1>c:\users\marcus\documents\visual studio 2008\projects\tetris\tetris\dsutil.cpp(1068) : error C3861: "DXTRACE_ERR_NOMSGBOX": Bezeichner wurde nicht gefunden.
    1>c:\users\marcus\documents\visual studio 2008\projects\tetris\tetris\dsutil.cpp(1096) : error C3861: "DXTRACE_ERR_NOMSGBOX": Bezeichner wurde nicht gefunden.
    1>c:\users\marcus\documents\visual studio 2008\projects\tetris\tetris\dsutil.cpp(1170) : error C3861: "DXTRACE_ERR_NOMSGBOX": Bezeichner wurde nicht gefunden.
    

    Beide Einbinden geht auch nicht, da dann EXTRACE_ERR mehrfach deklariert wird.
    Für jede Hilfe bin ich dankbar!
    Matze



  • Soa ich hab das Problem selbst gelöst.
    Für alle die Probleme mit dem DirectX-SDK haben bzw. mit den Libs, einfach mal den anderen Ordner des SDKs in den Projekteinstellungen angeben, also anstatt x64 den x86-Ordner angeben.
    Hat bei mir Wunderbar funktioniert 🙂
    Matze


Anmelden zum Antworten