"3d-Grafik-Programmierung" von Marius Apetri [beispiel gibt errors]



  • Hallo ich bin noch ein Neuling in der C++ Progammirung,
    bis jetzt hab ich nur mit C# und Dirext-X programiert.

    Ich hab mir das buch "3d-Grafik-Programmierung" von Marius Apetri gekauft und hab jetzt das erste beispiel ausprobiert und muste erst mal veststellen das ich extrem viele variablen von char nach wchar_t ändern muste.

    jetzt kommten aber nooch diese fehler 😞

    Fehler	1	error LNK2028: Nicht aufgelöstes Token (0A000052) ""extern "C" int __stdcall DestroyWindow(struct HWND__ *)" (?DestroyWindow@@$$J14YGHPAUHWND__@@@Z)", auf das in Funktion ""public: void __thiscall software_interface::close_window(void)" (?close_window@software_interface@@$$FQAEXXZ)" verwiesen wird.	main.obj	Spiel
    Fehler	2	error LNK2028: Nicht aufgelöstes Token (0A00005D) ""extern "C" void __stdcall PostQuitMessage(int)" (?PostQuitMessage@@$$J14YGXH@Z)", auf das in Funktion ""long __stdcall main_window_procedure(struct HWND__ *,unsigned int,unsigned int,long)" (?main_window_procedure@@$$FYGJPAUHWND__@@IIJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	3	error LNK2028: Nicht aufgelöstes Token (0A00005E) ""void __cdecl exit_error(char *)" (?exit_error@@$$FYAXPAD@Z)", auf das in Funktion ""private: void __thiscall software_interface::initialise_platform(long,long,long)" (?initialise_platform@software_interface@@$$FAAEXJJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	4	error LNK2028: Nicht aufgelöstes Token (0A000064) ""extern "C" struct HICON__ * __stdcall LoadCursorW(struct HINSTANCE__ *,wchar_t const *)" (?LoadCursorW@@$$J18YGPAUHICON__@@PAUHINSTANCE__@@PB_W@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	5	error LNK2028: Nicht aufgelöstes Token (0A000072) ""extern "C" long __stdcall DirectDrawCreate(struct _GUID *,struct IDirectDraw * *,struct IUnknown *)" (?DirectDrawCreate@@$$J212YGJPAU_GUID@@PAPAUIDirectDraw@@PAUIUnknown@@@Z)", auf das in Funktion ""private: void __thiscall software_interface::initialise_platform(long,long,long)" (?initialise_platform@software_interface@@$$FAAEXJJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	6	error LNK2028: Nicht aufgelöstes Token (0A000073) ""extern "C" int __stdcall TranslateMessage(struct tagMSG const *)" (?TranslateMessage@@$$J14YGHPBUtagMSG@@@Z)", auf das in Funktion ""unsigned char __cdecl key_pressed(void)" (?key_pressed@@$$FYAEXZ)" verwiesen wird.	main.obj	Spiel
    Fehler	7	error LNK2028: Nicht aufgelöstes Token (0A000074) ""extern "C" int __stdcall ShowCursor(int)" (?ShowCursor@@$$J14YGHH@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	8	error LNK2028: Nicht aufgelöstes Token (0A000077) ""extern "C" struct HICON__ * __stdcall LoadIconW(struct HINSTANCE__ *,wchar_t const *)" (?LoadIconW@@$$J18YGPAUHICON__@@PAUHINSTANCE__@@PB_W@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	9	error LNK2028: Nicht aufgelöstes Token (0A000084) ""extern "C" int __stdcall PeekMessageW(struct tagMSG *,struct HWND__ *,unsigned int,unsigned int,unsigned int)" (?PeekMessageW@@$$J220YGHPAUtagMSG@@PAUHWND__@@III@Z)", auf das in Funktion ""unsigned char __cdecl key_pressed(void)" (?key_pressed@@$$FYAEXZ)" verwiesen wird.	main.obj	Spiel
    Fehler	10	error LNK2028: Nicht aufgelöstes Token (0A000095) ""extern "C" struct HWND__ * __stdcall CreateWindowExW(unsigned long,wchar_t const *,wchar_t const *,unsigned long,int,int,int,int,struct HWND__ *,struct HMENU__ *,struct HINSTANCE__ *,void *)" (?CreateWindowExW@@$$J248YGPAUHWND__@@KPB_W0KHHHHPAU1@PAUHMENU__@@PAUHINSTANCE__@@PAX@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	11	error LNK2028: Nicht aufgelöstes Token (0A000098) ""extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z)", auf das in Funktion ""extern "C" int __cdecl MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PB_W1I@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	12	error LNK2028: Nicht aufgelöstes Token (0A00009B) ""extern "C" unsigned short __stdcall RegisterClassW(struct tagWNDCLASSW const *)" (?RegisterClassW@@$$J14YGGPBUtagWNDCLASSW@@@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	13	error LNK2028: Nicht aufgelöstes Token (0A00009C) ""extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	14	error LNK2028: Nicht aufgelöstes Token (0A0000A5) ""extern "C" void * __stdcall GetStockObject(int)" (?GetStockObject@@$$J14YGPAXH@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	15	error LNK2028: Nicht aufgelöstes Token (0A0000A6) ""extern "C" long __stdcall DefWindowProcW(struct HWND__ *,unsigned int,unsigned int,long)" (?DefWindowProcW@@$$J216YGJPAUHWND__@@IIJ@Z)", auf das in Funktion ""long __stdcall main_window_procedure(struct HWND__ *,unsigned int,unsigned int,long)" (?main_window_procedure@@$$FYGJPAUHWND__@@IIJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	16	error LNK2028: Nicht aufgelöstes Token (0A0000AB) ""extern "C" long __stdcall DispatchMessageW(struct tagMSG const *)" (?DispatchMessageW@@$$J14YGJPBUtagMSG@@@Z)", auf das in Funktion ""extern "C" long __cdecl DispatchMessage(struct tagMSG const *)" (?DispatchMessage@@$$J0YAJPBUtagMSG@@@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	17	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" long __stdcall DispatchMessageW(struct tagMSG const *)" (?DispatchMessageW@@$$J14YGJPBUtagMSG@@@Z)" in Funktion ""extern "C" long __cdecl DispatchMessage(struct tagMSG const *)" (?DispatchMessage@@$$J0YAJPBUtagMSG@@@Z)".	main.obj	Spiel
    Fehler	18	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z)" in Funktion ""extern "C" int __cdecl MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PB_W1I@Z)".	main.obj	Spiel
    Fehler	19	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" long __stdcall DefWindowProcW(struct HWND__ *,unsigned int,unsigned int,long)" (?DefWindowProcW@@$$J216YGJPAUHWND__@@IIJ@Z)" in Funktion ""long __stdcall main_window_procedure(struct HWND__ *,unsigned int,unsigned int,long)" (?main_window_procedure@@$$FYGJPAUHWND__@@IIJ@Z)".	main.obj	Spiel
    Fehler	20	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" void __stdcall PostQuitMessage(int)" (?PostQuitMessage@@$$J14YGXH@Z)" in Funktion ""long __stdcall main_window_procedure(struct HWND__ *,unsigned int,unsigned int,long)" (?main_window_procedure@@$$FYGJPAUHWND__@@IIJ@Z)".	main.obj	Spiel
    Fehler	21	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""void __cdecl exit_error(char *)" (?exit_error@@$$FYAXPAD@Z)" in Funktion ""private: void __thiscall software_interface::initialise_platform(long,long,long)" (?initialise_platform@software_interface@@$$FAAEXJJJ@Z)".	main.obj	Spiel
    Fehler	22	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" long __stdcall DirectDrawCreate(struct _GUID *,struct IDirectDraw * *,struct IUnknown *)" (?DirectDrawCreate@@$$J212YGJPAU_GUID@@PAPAUIDirectDraw@@PAUIUnknown@@@Z)" in Funktion ""private: void __thiscall software_interface::initialise_platform(long,long,long)" (?initialise_platform@software_interface@@$$FAAEXJJJ@Z)".	main.obj	Spiel
    Fehler	23	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall ShowCursor(int)" (?ShowCursor@@$$J14YGHH@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	24	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct HWND__ * __stdcall CreateWindowExW(unsigned long,wchar_t const *,wchar_t const *,unsigned long,int,int,int,int,struct HWND__ *,struct HMENU__ *,struct HINSTANCE__ *,void *)" (?CreateWindowExW@@$$J248YGPAUHWND__@@KPB_W0KHHHHPAU1@PAUHMENU__@@PAUHINSTANCE__@@PAX@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	25	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall GetSystemMetrics(int)" (?GetSystemMetrics@@$$J14YGHH@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	26	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" unsigned short __stdcall RegisterClassW(struct tagWNDCLASSW const *)" (?RegisterClassW@@$$J14YGGPBUtagWNDCLASSW@@@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	27	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" void * __stdcall GetStockObject(int)" (?GetStockObject@@$$J14YGPAXH@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	28	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct HICON__ * __stdcall LoadCursorW(struct HINSTANCE__ *,wchar_t const *)" (?LoadCursorW@@$$J18YGPAUHICON__@@PAUHINSTANCE__@@PB_W@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	29	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" struct HICON__ * __stdcall LoadIconW(struct HINSTANCE__ *,wchar_t const *)" (?LoadIconW@@$$J18YGPAUHICON__@@PAUHINSTANCE__@@PB_W@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	30	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall DestroyWindow(struct HWND__ *)" (?DestroyWindow@@$$J14YGHPAUHWND__@@@Z)" in Funktion ""public: void __thiscall software_interface::close_window(void)" (?close_window@software_interface@@$$FQAEXXZ)".	main.obj	Spiel
    Fehler	31	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall TranslateMessage(struct tagMSG const *)" (?TranslateMessage@@$$J14YGHPBUtagMSG@@@Z)" in Funktion ""unsigned char __cdecl key_pressed(void)" (?key_pressed@@$$FYAEXZ)".	main.obj	Spiel
    Fehler	32	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" int __stdcall PeekMessageW(struct tagMSG *,struct HWND__ *,unsigned int,unsigned int,unsigned int)" (?PeekMessageW@@$$J220YGHPAUtagMSG@@PAUHWND__@@III@Z)" in Funktion ""unsigned char __cdecl key_pressed(void)" (?key_pressed@@$$FYAEXZ)".	main.obj	Spiel
    Fehler	33	fatal error LNK1120: 32 nicht aufgelöste externe Verweise.	C:\Users\Xidus-Lap\Documents\C++\3D\Debug\Spiel.exe	Spiel
    

    hier ist meine cpp

    #include <windows.h>
    
    #include "screen_interface.h"
    #include "palette.h"
    
    MSG msg;
    uchar key_pressed( void );
    
    int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow )
    {
      // Beim Einstellen einer höheren Auflösung müssen auch die Konstanten inneralb der beiden
      // for()-Schleifen entsprechend angepasst werden
    
      screen_interface.open_window( hInstance, 640, 480, 32 );
      pixel_32 *screen = (pixel_32 *) screen_interface.get_screen_pointer();
    
      while( 1 )
      {
        if( key_pressed() ) break;
    
        for( long x=0 ; x<256 ; x++ )
           for( long y=0 ; y<480 ; y++ )
              screen[ y * 640 + x ] = palette[ x ];
      }
    
      screen_interface.release_screen_pointer();
    
      return msg.wParam;
    }
    
    uchar key_pressed( void )
    {
      if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
      {
        if( msg.message == WM_QUIT || msg.message == WM_KEYDOWN ) return 1;
    
        TranslateMessage( &msg );
        DispatchMessage( &msg );
      }
      return 0;
    }
    

    und hier noch die .h dateien

    #ifndef SCREEN_INTERFACE_H
    #define SCREEN_INTERFACE_H
    
    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <ddraw.h>
    
    #include "simple_types.h"
    
    void exit_error( char *message );
    void exit_nofile( char *user, char *filename );
    void message( char *title, char *message );
    
    #define x_res screen_interface.get_xr()
    #define y_res screen_interface.get_yr()
    
    #define WIN32_LEAN_AND_MEAN
    
    LRESULT CALLBACK main_window_procedure( HWND main_window_handle, UINT message, WPARAM wparam, LPARAM lparam )
    {
      if( message == WM_CLOSE ) {  PostQuitMessage( 0 );  return 0;  }
    
      return DefWindowProc( main_window_handle, message, wparam, lparam );
    }
    
    class software_interface
    {
      private:
        long x_resolution, y_resolution;
    
        LPDIRECTDRAW main_dd_object;
        LPDIRECTDRAWSURFACE primary_surface;
        DDSURFACEDESC surface_description;
        HWND main_window_handle;
    
        void initialise_platform( long x, long y, long bit_depth );
    
      public:
        long get_xr( void ) {  return x_resolution;  }
        long get_yr( void ) {  return y_resolution;  }
    
        void open_window( HINSTANCE hInstance, long x, long y, long bit_depth );
        void close_window( void );
    
        void *get_screen_pointer( void );
        void release_screen_pointer( void ) {  primary_surface->Unlock( surface_description.lpSurface );  }
    
        software_interface( void )
        {
          x_resolution = y_resolution = 0;
          main_dd_object = NULL;  primary_surface = NULL;  main_window_handle = NULL;
          memset( &surface_description, 0, sizeof( surface_description ) );
        }
       ~software_interface( void ) {  close_window();  }
    } screen_interface;
    
    void software_interface::initialise_platform( long x, long y, long bit_depth )
    {
      if( DirectDrawCreate( NULL, &main_dd_object, NULL ) != DD_OK )
        exit_error( "Fehler während der Ausführung von DirectDrawCreate().\n" );
    
      if
      ( 
        main_dd_object->SetCooperativeLevel
    	( 
    	  main_window_handle,
    	  DDSCL_ALLOWREBOOT | DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX 
    	)
    
    	!= DD_OK 
      )
      exit_error( "Fehler während der Ausführung von SetCooperativeLevel().\n" );
    
      if( main_dd_object->SetDisplayMode( x, y, bit_depth ) != DD_OK )
        exit_error( "Fehler während der Ausführung von SetDisplayMode().\n" );
    
      memset( &surface_description, 0, sizeof( surface_description ) );
      surface_description.dwSize = sizeof( surface_description );
      surface_description.dwFlags = DDSD_CAPS;
      surface_description.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
    
      if( main_dd_object->CreateSurface( &surface_description, &primary_surface, NULL ) != DD_OK )
        exit_error( "Fehler während der Ausführung von CreateSurface().\n" );
    }
    
    void software_interface::open_window( HINSTANCE hInstance, long x, long y, long bit_depth )
    {
      x_resolution = x;  y_resolution = y;
    
      WNDCLASS winclass;
    
      winclass.style = CS_OWNDC;
      winclass.lpfnWndProc = main_window_procedure;
      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 = L"Main Window";
      RegisterClass( &winclass );
    
      wchar_t window_name[] = L"3D-Grafik Programmierung";
    
      if( !(main_window_handle = CreateWindowEx( WS_EX_TOPMOST, L"Main Window", window_name, WS_VISIBLE | WS_POPUP, 0,0,
                                                 GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ), NULL,
                                                 NULL, hInstance, NULL )) )
        exit_error( "Fehler beim Öffnen des Applikationsfensters.\n" );
    
      ShowCursor( 0 );
    
      initialise_platform( x_resolution, y_resolution, bit_depth );
    }
    
    void software_interface::close_window( void )
    {   
      if( primary_surface )
      {    
        primary_surface->Release();
        primary_surface = NULL;
      }
    
      if( main_dd_object )
      {
        main_dd_object->Release();
        main_dd_object = NULL;
      }
    
      DestroyWindow( main_window_handle );
    }    
    
    void *software_interface::get_screen_pointer( void )
    {
      primary_surface->Lock( NULL, &surface_description, DDLOCK_SURFACEMEMORYPTR, NULL );
    
      return surface_description.lpSurface;
    }
    
    void exit_error( wchar_t *message )
    {
      screen_interface.close_window();
    
      ShowCursor( 1 );
      MessageBox( NULL, message, L"Fehler:", MB_OK );
    
      exit( 1 );
    }
    
    void exit_nofile( char *user, char *filename )
    {
      char string[ 500 ];
      sprintf( string, "%s: Fehler beim Öffnen der Datei '%s'.\n", user, filename );
    
      exit_error( string );
    }
    
    void message( wchar_t *title, wchar_t *message )
    {
      MessageBox( NULL, message, title, MB_OK ); 
    }
    
    #endif
    
    #ifndef SIMPLE_TYPES_H
    #define SIMPLE_TYPES_H
    
    #include <math.h>
    
    typedef unsigned char uchar;
    typedef unsigned short ushort;
    typedef unsigned long ulong;
    
    struct pixel_32
    {
      uchar blue, green, red, alpha;
    
      pixel_32( void ) : red( 0 ), green( 0 ), blue( 0 ), alpha( 0 ) { }
      pixel_32( uchar r, uchar g, uchar b ) : red( r ), green( g ), blue( b ), alpha( 0 ) { }
    };
    
    #endif
    

    ich hoffe ihr könnt mir helfen.

    vielen dank schon mal im voraus für die mühe



  • Hallo,

    Es scheint so, dass du nicht alle erforderlichen .lib-Dateien linkst.
    Unter anderen fehlt die user32.lib, in der die Funktion DestroyWindow implementiert ist. (Fehlermeldung 1). Die .lib-Dateien müsstest du bei den Projekteigenschaften hinzufügen können. Wo genau, hängt natürlich vom Programm ab, Unter MS Visual C++ 2005 kann man die Dateien unter Projekt->"Projektname"-Enstellungen->Konfigurationseigenschaften->Linker->Eingabe->Zusätzliche Abhängigkeiten hinzufügen.

    Anscheinend Kompilierst du dein Projekt mit eingesschaltetem UNICODE-Flag, daher musstest du die char-Variablen in wchar_t Umwandeln. Das Unicode-Flag kannst du so ausschalten (MS Visual C++ 2005):

    Projekt->"Projektname"-Eigenschaften->Konfigurationseigenschaften->Allgemein
    Dann unter Projektstandards auf der rechten Seite bei Zeichensatz "Nicht festgelegt" auswählen.

    Ich hoffe, ich konnte dir helfen.

    MfG, Jochen



  • Hey vielen dank schon mal, hab jetzt die user32.lib eingebunden und den Zeichensatz geändert.

    Jetzt kommen noch diese Fehler. So weit ich das sehe müster mir ddraw fehlen die hab ich auch also ddraw.h eingebunden aber der fehler komm dann immer noch

    Fehler	1	error LNK2028: Nicht aufgelöstes Token (0A00007A) ""extern "C" long __stdcall DirectDrawCreate(struct _GUID *,struct IDirectDraw * *,struct IUnknown *)" (?DirectDrawCreate@@$$J212YGJPAU_GUID@@PAPAUIDirectDraw@@PAUIUnknown@@@Z)", auf das in Funktion ""private: void __thiscall software_interface::initialise_platform(long,long,long)" (?initialise_platform@software_interface@@$$FAAEXJJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	2	error LNK2028: Nicht aufgelöstes Token (0A0000A9) ""extern "C" void * __stdcall GetStockObject(int)" (?GetStockObject@@$$J14YGPAXH@Z)", auf das in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)" verwiesen wird.	main.obj	Spiel
    Fehler	3	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" long __stdcall DirectDrawCreate(struct _GUID *,struct IDirectDraw * *,struct IUnknown *)" (?DirectDrawCreate@@$$J212YGJPAU_GUID@@PAPAUIDirectDraw@@PAUIUnknown@@@Z)" in Funktion ""private: void __thiscall software_interface::initialise_platform(long,long,long)" (?initialise_platform@software_interface@@$$FAAEXJJJ@Z)".	main.obj	Spiel
    Fehler	4	error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""extern "C" void * __stdcall GetStockObject(int)" (?GetStockObject@@$$J14YGPAXH@Z)" in Funktion ""public: void __thiscall software_interface::open_window(struct HINSTANCE__ *,long,long,long)" (?open_window@software_interface@@$$FQAEXPAUHINSTANCE__@@JJJ@Z)".	main.obj	Spiel
    Fehler	5	fatal error LNK1120: 4 nicht aufgelöste externe Verweise.	C:\Users\Xidus-Lap\Documents\C++\3D\Debug\Spiel.exe	Spiel
    


  • Du musst auch noch die ddraw.lib hinzufügen. Die ddraw.lib befindet sich im DirectX-SDK in dem Ordner Lib\(x86 bzw. x64)\ddraw.h
    Eigentlich müssten in dem Buch die nötigen Informationen stehen. Außerdem fehlt die Gdi32.lib, in der Die Funktion GetStockObject implementiert ist.

    MfG, Jochen



  • Der Code sieht nicht sehr vertrauenserweckend aus. Für einen Neuling wäre das ganz ok, aber der stammt doch direkt aus dem Buch, ja? Hoffentlich hat der gute Mann mehr Plan von Grafik als von C++. 🙂



  • cool danke für deine hilfe Jochen S. klappt jetzt

    @Nukularfüsiker was könnte ich den an dem Quellcode besser machen wenn der das nicht grade gut hinbekommen hat?

    ps: das ist genau der code aus dem buch



  • Xidus schrieb:

    @Nukularfüsiker was könnte ich den an dem Quellcode besser machen wenn der das nicht grade gut hinbekommen hat?

    Der Code ist kein C++, sondern quasi nur C mit minimalen C++-Anleihen. Typisch für jemanden, der vorher in C programmiert hat und nun ignoranterweise glaubt, damit automatisch auch C++ zu können. Um den Code besser zu machen, müsste man sich zuerst mal für eine der beiden Programmiersprachen entscheiden.

    Wenn du außer Grafikprogrammierung auch noch richtiges C++ programmieren lernen willst, solltest du dir auf keinen Fall den Programmierstil in diesem Buch zum Vorbild nehmen. Du könntest statt dessen mit dieser Linkliste für Neulinge anfangen, dort sind gute Tutorials und ein paar Bücher aufgelistet.



  • Also ich hab 4 Bücher über C++

    1. 3D-Grafik Programmierung
    2. C++ von A bis Z
    3. Der C++ Programierer
    4. Qt 4 – GUI-Entwicklung mit C++

    hab aber halt grade erst angefangen und hab bis jetzt auch erst mit Buch 1+2 gearbeitet

    ps: mischen von beiden sprachen ist nicht ratsam?
    weil in C++ von A bis Z seht z.B. das die String klasse viel langamer ist als
    C und char[]



  • Xidus schrieb:

    ps: mischen von beiden sprachen ist nicht ratsam?

    Man kann damit auch funktionierende Programme schreiben, aber einen Gefallen tut man sich bestimmt nicht. C++ bietet für vieles ganz andere Ansätze als C. Mit Funktionen wie memset und memcpy schießt man sich in C++ auch ganz schnell mal ins Knie.
    Zu dem Thema gibts hier auch schon Diskussionen, z. B. dieser Thread.

    weil in C++ von A bis Z seht z.B. das die String klasse viel langamer ist als
    C und char[]

    Das stimmt so pauschal nicht. Selbst wenn es stimmen würde, wäre es immer noch ein schlechtes Argument für C-Strings. Es ist doch zunächst am wichtigsten, dass Programme korrekt und absturzfrei funktionieren. Das String-Handling in C ist nämlich viel komplizierter und fehleranfälliger als die entsprechenden Klassen in C++.
    In der Praxis dürfte so ein Geschwindigkeitsunterschied sehr selten eine Rolle spielen, für einen Anfänger sowieso nicht.



  • Ich komm eigentlich ganz gut mit dem C-String zurecht aber ich werde mir deinen tipp zu herzen nehmen

    ps: danke @ all


Anmelden zum Antworten