我正在使用 Visual Studio 2010。
我正在尝试在 OpenGL 中编写简单的 Camera 类。
我需要在 Camera.h 中包含 gl/gl.h
gl/gl.h 已包含在 main.cpp 中,Camera.h 已包含在 main.cpp 中
当我把
#include <gl/gl.h>
在 Camera.h 中我遇到了一堆这样的错误:
Error 11 error C2086: 'int APIENTRY' : redefinition C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\gl\GL.h 1153 1 Gaz 3D
files:
相机.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
主要.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 ...
}
我究竟做错了什么?
只需首先包含 windows.h 即可。
#include <windows.h>
正如 OpenGL 常见问题解答中所述:
另请注意,您需要添加一个#include <windows.h>
之前的声明#include<GL/gl.h>
。 Microsoft 要求系统 DLL 使用特定的调用约定,该调用约定不是大多数 Win32 C 编译器的默认调用约定,因此他们使用一些扩展为非标准 C 语法的宏对 gl.h 中的 OpenGL 调用进行了注释。这导致 Microsoft 的 C 编译器使用系统调用约定。 windows.h 包含的包含文件之一定义了宏。
资源 :
- Social.msdn.microsoft.com - OpenGL 问题 http://social.msdn.microsoft.com/forums/en-US/Vsexpressvc/thread/5fa6bbe2-32db-49e2-a643-5db082f972e6
- OpenGL 常见问题解答 - 为什么我会收到编译、链接和运行时错误? http://www.opengl.org/resources/faq/technical/gettingstarted.htm#0020
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)