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 gibtZu 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