编译GLEW/SDL程序时出错

Getting errors when compiling GLEW/SDL program

本文关键字:出错 程序 SDL GLEW 编译      更新时间:2023-10-16

我有这样的代码:

#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;
}

我得到了这些错误:

/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)());
...

出了什么问题?看起来glu.h属于一个MinGW包。我正在和Cygwin一起使用NetBeans。

我怀疑您的代码片段是否是实际编译的。错误消息提到GLU定义。它们在GL/glu.h include中找到,该include在您的代码段中没有提及,也没有包含在glew.hSDL.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 */