Problem beim Kompilieren der Beispiele des Buches 3d-Spieleprogrammierung



  • Hallo,

    ich habe mir das Buch "3d-Spieleprogrammierung" zugelegt und habe jetzt Probleme beim Kompelieren der Beispielprogramme, die der Autor im Buch vorstellt.
    Es treten immer wieder Linker-Fehler auf

    Main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorString9W@4" in Funktion ""enum tbResult __cdecl Render(float)" (?Render@@YA?AW4tbResult@@M@Z)".
    1>Main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_DXGetErrorDescription9W@4" in Funktion ""enum tbResult __cdecl Render(float)" (?Render@@YA?AW4tbResult@@M@Z)".
    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""struct HWND__ * g_hWindow" (?g_hWindow@@3PAUHWND__@@A)".
    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""struct IDirect3DDevice9 * g_pD3DDevice" (?g_pD3DDevice@@3PAUIDirect3DDevice9@@A)".
    

    Ich habe schon Diverses, was ich in Foren gefunden habe, aufprobiert, z.B. habe ich die eingebundenen Dateien ins Projekt hinzugefügt und jeweilige Angängsel mit eingebaut:

    TriBase.lib DXErr.lib Dxerr9.lib d3d9.lib d3dx9.lib dinput8.lib dxguid.lib winmm.lib odbc32.lib odbccp32.lib Gdi32.Lib User32.Lib AdvAPI32.Lib Comdlg32.lib Ole32.Lib Oleaut32.lib Comctl32.lib kernel32.lib shell32.lib
    

    Es klappt jedoch immernoch nicht 😞
    Bitte helft mir!
    LG DieTuer

    ps: Ich habe Windows 7 home premium und VS 2008 Express Edition



  • ps: Bei dem Hinzufügen der Dateien kamen noch mehr Fehler hinzu
    Tribase.lib habe ich eingebunden



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hast du denn sowohl das DirectX SDK als auch das Platform SDK installiert?

    Habe bei Google eine mögliche Lösung gefunden! Hier der Thread dazu:
    http://www.spieleprogrammierer.de/index.php?page=Thread&threadID=11202

    mkG Nas



  • Ich habe das DirectX SDK installiert und die Bibilotheksdaten übernommen.Bei Windows 7, hab ich gelesen, gibt es seit Anfang an ein Plattform SDK...



  • hm ich guck mir mal an ob das klappt...



  • Jetzt gibt es nur noch 2 Fehler:

    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorDescription9A@4".
    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorString9A@4".
    


  • Du musst bei Windows 7 dennoch das Platform SDK installieren. Einfach mal bei google suchen. Die musst du für das Buch auch installieren.



  • hat die plattform denn etwas mit dem directx zu tun?

    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorDescription9A@4".
    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorString9A@4".

    die sehen mir nämlich eher nach directx aus...



  • Ach was, Probieren schadet nix



  • Brauche ich denn alles oder nur die libraries und include dateien?



  • Hm, ich hab jetzt das SDK installiert und die Include- und Bibilotheksdateien hinzugefügt und jetzt kommen 47 Fehler... 😮

    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__SetDlgItemTextA@12".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__DialogBoxParamA@20".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__EnableWindow@8".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__IsDlgButtonChecked@8".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__CheckDlgButton@12".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__EndDialog@8".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetDlgItem@8".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_Direct3DCreate9@4".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetSaveFileNameA@4".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetModuleHandleA@4".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__SendDlgItemMessageA@20".
    1>Direct3DEnum.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetOpenFileNameA@4".
    1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorDescription9A@4".
    1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_DXGetErrorString9A@4".
    1>InitDirect3D.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__ShowCursor@4".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetStockObject@4".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__LoadCursorA@8".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__AdjustWindowRect@12".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetSystemMetrics@4".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__DefWindowProcA@16".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__CreateWindowExA@48".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__UnregisterClassA@8".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__SetRect@20".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__BeginPaint@8".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__FillRect@12".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__PostQuitMessage@4".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__RegisterClassExA@4".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__DestroyWindow@4".
    1>InitWindow.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__EndPaint@8".
    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__MessageBoxA@16".
    1>Main.obj : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__LoadIconA@8".
    1>MSVCRT.lib(crtexew.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__InterlockedExchange@8".
    1>MSVCRT.lib(crtexew.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__Sleep@4".
    1>MSVCRT.lib(crtexew.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__InterlockedCompareExchange@12".
    1>MSVCRT.lib(crtexew.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetStartupInfoA@4".
    1>MSVCRT.lib(gs_report.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__TerminateProcess@8".
    1>MSVCRT.lib(gs_report.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetCurrentProcess@0".
    1>MSVCRT.lib(gs_report.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__UnhandledExceptionFilter@4".
    1>MSVCRT.lib(gs_report.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__SetUnhandledExceptionFilter@4".
    1>MSVCRT.lib(unhandld.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__SetUnhandledExceptionFilter@4".
    1>MSVCRT.lib(gs_report.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__IsDebuggerPresent@0".
    1>MSVCRT.lib(gs_support.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__QueryPerformanceCounter@4".
    1>MSVCRT.lib(gs_support.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetTickCount@0".
    1>MSVCRT.lib(gs_support.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetCurrentThreadId@0".
    1>MSVCRT.lib(gs_support.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetCurrentProcessId@0".
    1>MSVCRT.lib(gs_support.obj) : error LNK2001: Nicht aufgelöstes externes Symbol "__imp__GetSystemTimeAsFileTime@4"
    


  • Lies doch in der MSDN nach, welche Bibliothek für diese Funktionen notwendig ist.
    Bspw:
    SetDlgItemText, DialogBoxParam, EnableWindow u.u.u : User32.lib
    GetSaveFileName : Comdlg32.lib
    DXGetErrorDescription9 : dxerr9.lib

    Wenn du diese Bibliotheksnamen dem Linker mitteilst und die Pfade in den Einstellungen stehen, dürfte dem erfolgreichen Linken nichts mehr im Wege stehen.



  • Hab ich jetzt bei einigen ausprobiert, aber kein Erfolg, immernoch 46 Fehler



  • Vielleicht liegt es ja auch an der Version, VS2008 Express...



  • Was für libs linkst du alles?



  • dot schrieb:

    Was für libs linkst du alles?

    Beitrag 1

    Die Tuer schrieb:

    TriBase.lib DXErr.lib Dxerr9.lib d3d9.lib d3dx9.lib dinput8.lib dxguid.lib winmm.lib odbc32.lib odbccp32.lib Gdi32.Lib User32.Lib AdvAPI32.Lib Comdlg32.lib Ole32.Lib Oleaut32.lib Comctl32.lib kernel32.lib shell32.lib
    


  • Bist du schon mal auf "Projekt bereinigen" und dann auf "Neu erstellen" gegangen?
    Danach schau einfach mal unter Projekteigenschaften --> VC++-Verzeichnisse nach ob da auch bei Bibliothekverzeichnisse die entsprechenden Verzeichnisse für das Platform SDK und das DXSDK eingetragen sind.

    Was mir gerade noch auf gefallen ist...sind diese libs auch case sensitive? Probier mal aus, ob es einen Unterschied zwischen User32.lib oder user32.lib gibt!



  • @udopolis
    Ich habe gemerkt dass ich eigentlich nur 4 der libs linken muss, der Rest hatte keine Auswirkung auf die Fehler, also waren überflüssig...

    @Nasghat
    Ich habe das Projekt bereinigt und neu erstellt, doch dann kommen wieder die gleichen Fehermeldungen...
    Und in den VC++ Verzeichnissen habe ich drin:
    Microsoft DirectX SDK
    DX9 SDK
    Tribase
    Microsoft SDK

    Wie du siehst habe ich 2 Dx sdk, wenn ich jedoch eins von Beiden weglasse, fehlen ein paar include-Dateien...
    Zu allen h-Dateien habe ich die passenden lib-Dateien eingebunden
    ps: Die Dateien sind nicht Case sensitive



  • ps: bei dem einem hat nur eine Datei gefehlt, die ich jetzt rüberkopiert habe, also hab ich jetzt nur noch 1 dx9 sdk included


Anmelden zum Antworten