我有这段代码:
#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包。我正在使用NetBeans和Cygwin。
答案 0 :(得分: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 */