Einbinden von <xnamath.h> wirft Fehler aus



  • Hallo, liebe Community,

    wie der Titel schon sagt, bekomme ich folgende Fehlermeldung sobald ich <xnamath.h> in mein VC++ Express 2010 - Projekt einbinde (ich benutze den Standardcompiler):

    1>------ Erstellen gestartet: Projekt: ArenaX, Konfiguration: Debug Win32 ------
    1>  Camera.cpp
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'XMConvertToRadians'
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2433: 'FLOAT': '__forceinline' bei der Deklaration von Daten nicht zulässig
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'fDegrees'
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2059: Syntaxfehler: ')'
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2143: Syntaxfehler: Es fehlt ';' vor '{'
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(160): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'XMConvertToDegrees'
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(160): error C2433: 'FLOAT': '__forceinline' bei der Deklaration von Daten nicht zulässig
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(160): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(160): error C2086: 'int FLOAT': Neudefinition
    1>          c:\program files (x86)\microsoft directx sdk (june 2010)\include\xnamath.h(159): Siehe Deklaration von 'FLOAT'
    
    usw......
    Nach den ganzen Fehlermeldungen:
    
    Kompilierung wird abgebrochen.
    1>  Code wird generiert...
    1>  Kompilieren...
    1>  Graphics.cpp
    1>  Code wird generiert...
    1>  Kompilieren...
    1>  SystemClass.cpp
    1>  Code wird generiert...
    1>  Überspringen... (keine relevanten Änderungen gefunden)
    1>  main.cpp
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    Laut Fehlermeldung müsste es ja ein Syntaxfehler in xnamath.h sein - jedoch kann ich das ausschließen, da der Include der Datei in einem anderen Projekt ohne Probleme funktioniert.

    Ich habe den Fehler dann gegoogelt - dort deutet alles darauf hin, dass ev die Reihenfolge, in der ich die ganzen #includes durchführe nicht passt.
    Habe mehrere Möglichkeiten versucht, jedoch hat nichts geklappt.

    Sobald ich die Camera-Klasse weglasse bekomme ich keinen Fehler mehr.

    hier mal die interessanten Dateien:

    #ifndef _SYSTEMCLASS_H_
    #define _SYSTEMCLASS_H_
    
    #define WIN32_LEAN_AND_MEAN
    
    #include <windows.h>
    #include "Input.h"
    #include "Graphics.h"
    
    class SystemClass
    {
    public:
    	SystemClass();
    	~SystemClass();
    
    	bool Initialize();
    	void Shutdown();
    	void Run();
    
    	LRESULT CALLBACK MessageHandler(HWND, UINT, WPARAM, LPARAM);
    
    private:
    	bool Frame();
    	void InitializeWindows(int&, int&);
    	void ShutdownWindows();
    
    private:
    	LPCSTR m_applicationName;
    	HINSTANCE m_hinstance;
    	HWND m_hwnd;
    
    	Input* m_Input;
    	Graphics* m_Graphics;
    };
    
    static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    
    static SystemClass* ApplicationHandle = 0;
    
    #endif
    
    #ifndef _GRAPHICS_H_
    #define _GRAPHICS_H_
    
    #include "D3d.h"
    #include "Camera.h"
    
    const bool FULL_SCREEN = true;
    const bool VSYNC_ENABLED = true;
    const float SCREEN_DEPTH = 10.0f;
    const float SCREEN_NEAR = 1.0f;
    
    class Graphics
    {
    public:
    	Graphics();
    	~Graphics();
    
    	bool Initialize(int, int, HWND);
    	void Shutdown();
    	bool Frame();
    
    private:
    	bool Render();
    
    private:
    	D3d* m_D3d;
    	Camera* m_Camera;
    };
    
    #endif
    
    #ifndef _CAMERA_H_
    #define _CAMERA_H_
    
    #include <xnamath.h>
    
    class Camera
    {
    public:
    	Camera();
    	~Camera();
    	void Initialize();
    	void Render();
    	void GetViewProjectionMatrix(XMMATRIX&);
    
    private:
    	XMMATRIX m_viewProjectionMatrix;
    
    };
    
    #endif
    
    #ifndef _D3DCLASS_H_
    #define _D3DCLASS_H_
    
    #include <D3D11.h>
    #include <D3DX11.h>
    #include <DxErr.h>
    
    class D3d
    {
    public:
    	D3d();
    	~D3d();
    
    	bool Initialize(int, int, bool, HWND, bool, float, float);
    	void Shutdown();
    
    	void BeginScene(float, float, float, float);
    	void EndScene();
    
    	ID3D11Device* GetDevice();
    	ID3D11DeviceContext* GetDeviceContext();
    
    private:
    	bool m_vsync_enabled;
    	D3D_DRIVER_TYPE m_driverType;
    	D3D_FEATURE_LEVEL m_featureLevel;
    	IDXGISwapChain* m_swapChain;
    	ID3D11Device* m_device;
    	ID3D11DeviceContext* m_deviceContext;
    	ID3D11RenderTargetView* m_renderTargetView;
    	ID3D11Texture2D* m_depthStencilBuffer;
    	ID3D11DepthStencilState* m_depthStencilState;
    	ID3D11DepthStencilView* m_depthStencilView;
    };
    
    #endif
    

    Kann mir jemand von euch helfen?

    Danke im Voraus.

    lg



  • Ich habe den Fehler nun behoben, indem ich die Datei noch einmal neu hinzugefügt habe und die Projektmappe neu erstellt habe.


Log in to reply