gpt4 book ai didi

c++ - 我如何摆脱 glu.h 中的这些编译器错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:27 26 4
gpt4 key购买 nike

尝试使用这个 tutorial在带有 netbeans 和 cygwin 4.8.1 的 64 位 Windows 8 上。

我收到很多这样的错误:/usr/include/w32api/GL/glu.h:68:79: error: expected ‘)’ before ‘*’ token.

关于这样的语句:void APIENTRY gluQuadricCallback(GLUquadric *qobj,GLenum which,void (CALLBACK *fn)());

错误消息上的指针指向 fn() 之前的 *。

编辑:包含 windef.h 可消除编译器错误消息。

我留下了一堆 undefined reference ,例如:glfwInit

edit2:使用 André Fischer 的想法,我可以获得干净的编译(您需要为链接器添加目录和 -l 选项)。

我现在有一个:在搜索 -lopengl32 时跳过不兼容的 ../../../../../Windows/SysWOW64/opengl32.dll 和:对 `_imp _vsnprintf'。所以看起来我有一个 32/64 位问题和一个未定义的外部。

必须有更明智的方法让 opengl 在 Windows 上工作。

最佳答案

我假设你的意思是 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

在您的项目目录中创建一个名为“include”的目录,其中包含一个子文件夹“GL”。

GLFW Download Site 中获取二进制文件(32 位,MinGW)并将 .dll/.so 放入您的构建文件夹(或将它们解压缩到某处并将它们添加到搜索目录)并将头文件放入“include/GL”。

教程中的 glfw 代码也有些过时;它不再适用于 glfw3。您必须使用 GLFW 的 conversion guide 更新它/尝试this version (我无法测试,因为我目前不在家)或使用 glfw2。

最后下载GLEW sources并按照 README.txt 中的说明构建它。将 .dll/.so 放入您的构建文件夹(或添加到搜索目录)并将头文件放入“include/GL”。

将以下内容添加到您的编译器标志中:

-Iinclude/

最后将以下参数添加到您的链接器:

-L/lib -lglu32 -lopengl32 -lGL -lGLU -lglfw -lglew

您现在应该可以编译教程了。

编辑:添加了构建 GLEW、GLFW 的说明并完成了我的回答以包括从头开始构建所有内容。
Edit2:教程代码的链接 glfw3 版本。
Edit3:添加了缺少的链接器选项。

关于c++ - 我如何摆脱 glu.h 中的这些编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19198244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com