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.