Verweis auf nicht aufgelöstes externes Symbol
-
Ich bin immernoch am lesen des Buches "3D-Spiele-Programmierung".
Nun hab ich wieder ein problem mit nem Verweis auf ein nicht aufgelöstes Symbol.
Hier der Quellcode (is sauber aus dem buch 1:1 kopiert):
#include <Windows.h> #include <TriBase.h> #include "C:\Dokumente und Einstellungen\The King\Eigene Dateien\Visual Studio 2005\Engine\Allgemeines\InitWindow.h" #include "C:\Dokumente und Einstellungen\The King\Eigene Dateien\Visual Studio 2005\Engine\Allgemeines\Direct3DEnum.h" #include "C:\Dokumente und Einstellungen\The King\Eigene Dateien\Visual Studio 2005\Engine\Allgemeines\InitDirect3D.h" #define D3D_DEBUG_INFO //Render-Funktion tbResult Render(float fNumSecsPassed) { return TB_OK; } //Move-Funktion b tbResult Move(float fNumSecsPassed) { return TB_OK; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd) { //Tribase-Engine initialisieren tbInit(); //Direct3d-Optionen abfragen (Vom benutzer gewählt) SDirect3DParameters Direct3DParameters; tbResult Result = GetDirect3DParameters(&Direct3DParameters); if(Result == TB_ERROR) { //Es trat ein fehler auf! MessageBox(NULL, "Fehler beim Abzählen!", "Fehler", MB_OK | MB_ICONEXCLAMATION); tbExit(); return 0; } else if(Result == TB_CANCELED) { //Der Dialog wurde abgebrochen! tbExit(); return 0; } //Fenster initialisieren. Die Grösse hängt vom gewählten Videomodus ab, der in der Parameterstruktur gespeichert ist if(InitWindow(Direct3DParameters.VideoMode.Width, Direct3DParameters.VideoMode.Height, "Beispielprogramm Nr. 2: Direct3D-Abzählung", LoadIcon(hInstance, MAKEINTRESOURCE(TB_IDI_ICON1)))) { //Fehler beim erstellen des Fensters! MessageBox(NULL, "Fehler beim Erstellen des Fensters!", "Fehler", MB_OK | MB_ICONEXCLAMATION); ExitWindow(); tbExit(); return 1; } //Direct3D mit den abgefragten Einstellungen initialisieren if(InitDirect3D(&Direct3DParameters, g_hWindow)) { //Fehler! MessageBox(g_hWindow, "fehler beim initialisieren von Direct3D!", "Fehler", MB_OK | MB_ICONEXCLAMATION); ExitWindow(); tbExit(); return 1; } //Nachrichtenschleife tbDoMessageLoop(Render, Move); //Direct3D und fenster herunterfahren ExitDirect3D(); ExitWindow(); //engine herunterfahren tbExit(); return 0; }Diese Fehler werden angezeigt:
1>------ Erstellen gestartet: Projekt: 3D-Game, Konfiguration: Debug Win32 ------ 1>Verknüpfen... 1>3D-Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitDirect3D(void)" (?ExitDirect3D@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16". 1>3D-Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl InitDirect3D(struct SDirect3DParameters *,struct HWND__ *)" (?InitDirect3D@@YA?AW4tbResult@@PAUSDirect3DParameters@@PAUHWND__@@@Z)" in Funktion "_WinMain@16". 1>3D-Game.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""struct HWND__ * g_hWindow" (?g_hWindow@@3PAUHWND__@@A)". 1>3D-Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl ExitWindow(void)" (?ExitWindow@@YA?AW4tbResult@@XZ)" in Funktion "_WinMain@16". 1>3D-Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl InitWindow(int,int,char *,struct HICON__ *)" (?InitWindow@@YA?AW4tbResult@@HHPADPAUHICON__@@@Z)" in Funktion "_WinMain@16". 1>3D-Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""enum tbResult __cdecl GetDirect3DParameters(struct SDirect3DParameters *)" (?GetDirect3DParameters@@YA?AW4tbResult@@PAUSDirect3DParameters@@@Z)" in Funktion "_WinMain@16". 1>C:\Dokumente und Einstellungen\The King\Eigene Dateien\Visual Studio 2005\Projects\3D-Game\Debug\3D-GameD.exe : fatal error LNK1120: 6 nicht aufgelöste externe Verweise. 1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\The King\Eigene Dateien\Visual Studio 2005\Projects\3D-Game\3D-Game\Debug\BuildLog.htm" gespeichert. 1>3D-Game - 7 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Wie kann ich das Problem beheben?
Und es würde mich auch noch interessieren, wie so ein Fehler zustande kommt und wie ich selbständg herausfinden kann, wie das zu lösen ist, wenn es wieder einmal vorkommt.
Ich hoffe, jemand kann mir helfen.
ps: hoffentlich bin ich hier im richtigen Forum, mit meiner letzten Frage zu nem Programm aus dem Buch wurde ich hier her verschoben.
-
Hallo,
ich habe das Buch auch und daher weiß ich auch, dass vom Autor des Buches selbst ein hervorragendes Forum eingerichtet wurde, welches die meisten Fragen sehr schnell beantworten kann.
Aber damit ich Dich nicht ganz im Regen stehen lasse: Hast Du auch nicht vergessen die beiden Librarys mit in den Linker zu tun? Wenn ich mich recht erinnere werden die meisten Funktionen dort erst definiert. Lies Dir nochmal im Buch durch, was Du genau machen musst um ein Programm mit der TriBase Engine zu erstellen und versuch es dann noch einmal.
Ich denke, dass es wirklich an den vergessenen .lib Files liegen wird.
Gruß
Mav
-
Es liegt ganz sicher net an den librarys. Die hab ich alle mitgelinkt.
Das link-Fenster:
kernel32.lib TRIBASED.LIB d3d9.lib d3dx9.lib dxguid.lib DxErr9.LIB user32.libund doch funktioniert es nicht...
Ich hab zwar mit google gesucht, aber das forum nicht gefunden...Ich werd mal weitersuchen. Trotzdem dürf ihr hier auch antworten

-
Und du bist Dir 100%ig Sicher, dass Du auch alle Pfade korrekt gesetzt hast? Schau nochmal in die Seite 25 (Installation und Einrichten des Projekts) und vergleiche da alles nochmal.
Und der Link den Du suchst steht im Buch drin ... Seite 3. Manchmal muss Google nicht bemüht werden. Die Seite heißt http://www.spieleprogrammierer.de
-
Hab nochmals alles durchgeschaut.
Alles was man dem Buch nach einbinden und hinzufügen soll, hab ich gemacht. Bis ins letzte Details hab ich alles Schritt für Schritt so gemacht.
Ich hab kein ahnung, an was es liegen könnte....Danke schonmals für deine Hilfe!
-
Nun hab ichs rausgefunden, dank diesem Link hier:
http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=5830&start=0&postdays=0&postorder=ascIch vergass die Dateien dem Projekt hinzuzufügen...

Danke viel mals für deine Hilfe Maviee!