Ich*_*ann 15 opengl include redefinition
我正在使用Visual Studio 2010.我正在尝试在OpenGL中编写简单的Camera类.我需要在Camera.h中包含gl/gl.h
gl/gl.h已经包含在main.cpp中了,Camera.h包含在main.cpp中当我放入
#include <gl/gl.h>
Run Code Online (Sandbox Code Playgroud)
在Camera.hi中有一堆像这样的错误:
Error 11 error C2086: 'int APIENTRY' : redefinition C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gl\GL.h 1153 1 Gaz 3D
文件:
Camera.h
#include <math.h>
#include <gl/gl.h>
#ifndef _CAMERA_H
#define _CAMERA_H
class Camera
{
private:
Camera();
public:
static Camera& getCamera();
float x, y, z, rotv, roth;
void moveForward(float n);
void moveBackward(float n);
void moveLeft(float n);
void moveRight(float n);
void lookUp(float n);
void lookDown(float n);
void lookLeft(float n);
void lookRight(float n);
};
#endif
Run Code Online (Sandbox Code Playgroud)
main.cpp中:
#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
#include <math.h>
#include "Camera.h"
// ... some variables ...
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
// main code ...
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Col*_*ert 24
首先要包含windows.h.
#include <windows.h>
Run Code Online (Sandbox Code Playgroud)
正如在OpenGL常见问题中所说:
另外,请注意,您需要在
#include <windows.h>之前发表声明#include<GL/gl.h>.Microsoft要求系统DLL使用特定的调用约定,该约定不是大多数Win32 C编译器的默认调用约定,因此他们使用扩展为非标准C语法的一些宏来注释gl.h中的OpenGL调用.这导致Microsoft的C编译器使用系统调用约定.windows.h中包含的一个包含文件定义了宏.
资源: