【问题标题】:Sudden issues with glut and glew includes and type specifiersglut 和 glew 的突然问题包括和类型说明符
【发布时间】:2013-03-01 20:28:23
【问题描述】:

我目前正在为游戏开发课程做一个最终的编程项目,并选择在程序的 3D 渲染端使用 C++ 和 OpenGL(尽管我对此几乎没有经验)。

到目前为止,我一直在使用它,完全没有出现严重错误,然后就搁置了几天。但是当我返回时,我开始使用我使用的几个 GLfloat 变量出现各种“C4430 - 缺少类型说明符”错误。

这是我之前的定义,在我今天重新加载之前效果很好:

    #include <gl/glew.h>
    #include <gl/glut.h>

    ... Other variable and object definitions

    const GLfloat DEFAULT_X = -5.0f;  //C4430: missing type specifyer on all 3 lines and
    const Glfloat DEFAULT_Y = -4.0f;  //C2146: syntax error : missing ';' before identifier 'DEFAULT_Y' on this line only
    const GLfloat DEFAULT_Z = -20.0f;

    GLfloat viewX = DEFAULT_X; //This line is fine
    GLfloat viewY = DEFALUT_Y; //Resulting C2065: Undeclared identifyer
    GLfloat viewZ = DEFALUT_Z; //on both these lines

为了解决这个问题,我开始更改#includes(也许是一种愚蠢的方法,但此时我很困惑)并发现添加 Windows.h 和 gl/GL.h,正如一些人建议的那样,解决了所有问题,但只有一个问题。

    #include <Windows.h>
    #include <gl/GL.h>
    #include <gl/glew.h>
    #include <gl/glut.h>

新的问题是尝试在 gl/glew.h 之前使用 gl/GL.h 会引发错误“C1189:glew.h 之前包含 gl.h”,因为猜测,glew 包含 gl.h 本身。但是任何更改都会导致之前的类型指定错误。

让我感到困惑的是,如果 glew 包含 GL.h,那么这些类型说明符不会也包含在其中吗?我将继续在没有测试的情况下继续进行方法编码,但需要能够尽快测试我正在做的事情。谁能提供帮助或建议?

【问题讨论】:

    标签: c++ opengl glut glew


    【解决方案1】:
    #include <Windows.h>
    #include <gl/GL.h>
    #include <gl/glut.h>
    #include <gl/glew.h>
    

    这是包含这些标题的错误顺序。

    GLEW(或您正在使用的任何 OpenGL 加载程序)总是首先出现。您从不gl.h 包含在 OpenGL 加载程序标头中;您只需包括他们的(在这种情况下为glew.h)。它位于 OpenGL 或 OpenGL 工具的所有其他标头之前。

    接下来是 FreeGLUT 的标头。在那之后......你根本不应该包括window.h,除非你正在做一些特定于Windows的代码。如果是,请在 FreeGLUT 的内容之后包含它。

    【讨论】:

    • 我现在很想捂脸,而且原因比你想象的要多。首先,您建议的顺序是我将它们贴在其中的原始顺序,我在编写问题时错误地复制了顺序(已更正此)。更糟糕的是,最初的错误是在某些情况下 GLfloat 的简单拼写错误造成的,在变量使用中也是如此。我不敢相信我真的做到了 -.- 谢谢你的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多