Compilierfehler in C++ -Beispiel in Visual Studio 2008 (help needed)



  • Habe das Buch "3d-Spiele mit C++ und DirectX in 21 Tagen" von Alexander Rudolph vor mir. Das Listing zur Erzeugung eines Fensters habe ich in Visual Studio 2008 eingegeben. Beim kompilieren tritt folgender Fehler auf:
    Error LNK2019: unresolved external symbol "void __cdecl Game_Init(void)" (?Game_Init@@YAXXZ) referenced in function _WinMain@16. Dazu der Folgefehler:
    Error fatal error LNK1120: 1 unresolved externals.
    Der Code ist folgender:

    //	
    // DEFINES
    //	
    #define WINDOW_CLASS_NAME L"Game Shell Window"
    #define WIN32_LEAN_AND_MEAN
    // 	
    // INCLUDES
    //	
    #include <windows.h>
    //	
    // MACROS
    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code)&0x8000)?1:0)
    #define KEYUP(vk_code)	((GetAsynckeyState(vk_code)&0x8000)?0:1)
    //	
    // GLOBALS
    //	
    HWND	main_window_handle = NULL;
    HINSTANCE hinstance_app	= NULL;
    //	
    // Wichtige GAME-Funktionsprototypen
    //	
    void Game_Shutdown(void);
    void Game_Init(void);
    void Game_Main(void);
    // Funktionsdefinitionen
    //	
    LRESULT CALLBACK WindowProc(HWND hwnd,
    							UINT msg,
    							WPARAM wparam,
    							LPARAM lparam)
    {
    	PAINTSTRUCT ps;
    	HDC	hdc;
    
    	// Nachrichtenverarbeitung
    	switch(msg)
    {
    	case WM_CREATE:
    	{
    		return(0);
    	}
    	break;
    
    	case WM_PAINT:
    	{
    	hdc = BeginPaint(hwnd,&ps);
    	EndPaint(hwnd,&ps);
    	return(0);
    	}
    	break;
    
    case WM_DESTROY:
    	{
    	PostQuitMessage(0);
    	return(0);
    	}
    break;
    
    default:
    	break;
    }
    return (DefWindowProc(hwnd, msg, wparam, lparam));
    }
    /////////////////////////////////////////////////////////////
    int WINAPI WinMain(HINSTANCE hinstance,
    					HINSTANCE hprevinstance,
    					LPSTR lpcmdline,
    					int ncmdshow)
    {
    	WNDCLASSEX	winclass;
    	HWND		hwnd;
    	MSG			msg;
    // Fenstereigenschaften festlegen:
    winclass.cbSize			= sizeof(WNDCLASSEX);
    winclass.style			= CS_HREDRAW | CS_VREDRAW;
    winclass.lpfnWndProc	= WindowProc;
    winclass.cbClsExtra		= 0;
    winclass.cbWndExtra		= 0;
    winclass.hInstance		= hinstance;
    winclass.hIcon			= LoadIcon(NULL, IDI_APPLICATION);
    winclass.hCursor		= LoadCursor(NULL, IDC_ARROW);
    winclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
    winclass.lpszMenuName	= NULL;
    winclass.lpszClassName	= WINDOW_CLASS_NAME;
    winclass.hIconSm		= LoadIcon(NULL, IDI_APPLICATION);
    
    hinstance_app = hinstance;
    if( !RegisterClassEx(&winclass))
    	return(0);
    
    if(!(hwnd = CreateWindowEx(NULL,
    							WINDOW_CLASS_NAME,
    							L"My Game Shell",
    							WS_OVERLAPPEDWINDOW | WS_VISIBLE,
    							0,0,
    							800,600,
    							NULL,
    							NULL,
    							hinstance,
    							NULL)))
    return(0);
    
    main_window_handle = hwnd;
    Game_Init();
    while(TRUE) // Nachrichtenweiterleitung
    {
    	if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    	{
    		if(msg.message == WM_QUIT)
    			break;
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    	Game_Main();
    }
    
    Game_Shutdown();
    
    return(msg.wParam);
    }
    /////////////////////////////////////////////////////////////
    void Game_lnit(void)
    {}
    
    /////////////////////////////////////////////////////////////
    void Game_Main(void)
    {
    	// Mit ESC kann die Anwendung verlassen werden
    	if(KEYDOWN(VK_ESCAPE))
    		SendMessage(main_window_handle,WM_CLOSE,0,0);
    }
    /////////////////////////////////////////////////////////////
    void Game_Shutdown(void)
    {}
    

    Kann mir jemand bitte helfen? 😕



  • Zeile 123: Die Funktion muss Game_Init () heißen, nicht Game_lnit ()...



  • Dummer Schreibfehler ... Danke für den Hinweis
    😃


Anmelden zum Antworten