编译GLEW/SDL程序时出错

Lie*_*mai 2 c++ opengl glew

我有这个代码:

#include <iostream>

#include <glew.h>
#include <SDL.h>

#pragma comment(lib, "glew32.lib")
#pragma comment(lib, "SDL2.lib")

using namespace std;

int main(){

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

/usr/include/w32api/GL/glu.h:68:79: error: expected ‘)’ before ‘*’ token
 void APIENTRY gluQuadricCallback(GLUquadric *qobj,GLenum which,void (CALLBACK *fn)());
                                                                               ^
/usr/include/w32api/GL/glu.h:68:79: error: expected ‘)’ before ‘*’ token
/usr/include/w32api/GL/glu.h:68:79: error: expected initializer before ‘*’ token
/usr/include/w32api/GL/glu.h:78:79: error: expected ‘)’ before ‘*’ token
 void APIENTRY gluTessCallback(GLUtesselator *tess,GLenum which,void (CALLBACK *fn)());
...
Run Code Online (Sandbox Code Playgroud)

什么地方出了错?似乎glu.h属于MinGW包.我正在使用NetBeans和Cygwin.

dat*_*olf 5

我怀疑你的代码片段是实际编译的.错误消息提到GLU定义.这些都是在发现GL/glu.h这是在你的代码片段无处提到的,也包括不包括在既不glew.h也没有SDL.h.

无论如何,错误很可能是由于缺少Windows特定APIENTRY宏的定义(仅在Windows操作系统的构建中预期).windows.h自己包含或定义宏.

我建议在包含任何与OpenGL相关的内容之前使用它.

#if defined(_WIN32) || defined(_WIN64) || defined(__WIN32__) \
 || defined(__TOS_WIN__) || defined(__WINDOWS__)
/* Compiling for Windows */
#ifndef __WINDOWS__
#define __WINDOWS__
#endif
#  include <windows.h>
#endif/* Predefined Windows macros */
Run Code Online (Sandbox Code Playgroud)