尝试在64位Windows 8上使用此tutorial与netbeans和cygwin 4.8.1。
我收到很多这样的错误:/usr/include/w32api/GL/glu.h:68:79:错误:期望')'在'*'令牌之前。
对这样的语句:void APIENTRY gluQuadricCallback(GLUquadric * qobj,GLenum which,void(CALLBACK * fn)());
错误消息上的指针指向fn()之前的*。
编辑:包括windef.h摆脱编译器错误消息。
我留下了一堆未定义的引用,例如:glfwInit
edit2:使用AndréFischer的想法,我可以得到一个干净的编译(你需要为链接器添加目录和-l选项)。
我现在有一个:在搜索-lopengl32时跳过不兼容的../../../../../Windows/SysWOW64/opengl32.dll,并且:未定义引用`_ imp _vsnprintf”。所以看起来我有一个32/64位问题和一个未定义的外部。
必须有一种更健全的方式让opengl在Windows上工作。
答案 0 :(得分:4)
我认为你的意思是Tutorial 1: Opening a Window并使用Netbeans的内置构建系统而不是CMake。
包含头文件的顺序很重要(source)。试试这样:
#include <windef.h> // According to comments above
#include <GL/glew.h> // Before any gl headers
#include <GL/gl.h>
//#include <GL/glext.h> // Linux headers
//#include <GL/wglext.h> // Windows headers - Not sure which ones cygwin needs. Just try it
#include <GL/glu.h> // Always after gl.h
#include <GL/glfw.h> // When all gl-headers have been included
使用子文件夹“GL”在项目目录中创建名为“include”的目录。
从GLFW Download Site抓取二进制文件(32位,MinGW),然后将.dll / .so放入你的build-folder(或者将它们解压缩到某个地方并将它们添加到搜索目录中)并将头文件放入“包括/ GL”。
本教程中的glfw代码也略显过时;它不再适用于glfw3。 您必须使用GLFW的conversion guide / try this version(我无法测试,因为我目前不在家)或使用glfw2来更新它。
最后下载GLEW sources并按照README.txt中的说明进行构建。将.dll / .so放入您的构建文件夹(或添加到搜索目录),将头文件放入“include / GL”。
将以下内容添加到Compiler-Flags:
-Iinclude/
最后在链接器中添加以下参数:
-L/lib -lglu32 -lopengl32 -lGL -lGLU -lglfw -lglew
您现在应该可以编译教程了。
编辑:添加了构建GLEW,GLFW的说明,并完成了我的答案,包括从头开始构建所有内容
Edit2:链接的glfw3版本的教程代码。
Edit3:添加了缺少的链接器选项。