gl.h在glew之前被包含,但GLFW需要gl.h。

4

我记得#include的顺序很重要。嗯,我有点麻烦了。我有这两个头文件:

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

如果我运行它,会出现一个错误,指出gl.h在glew.h之前被包含。但是,如果我反转这两个的顺序,使glew.h先出现,就会出现很多错误。我只是想找出# define-s的含义,这样我就可以为自己说:#define whatineed 0x0000x。

  1. 如何解决头文件排列的问题。
  2. 寻找和创建我的定义的方法是否安全?

你的意思是 #include <glfw.h> 吗? - Rafe Kettler
不,我的glfw.h文件在gl/文件夹中。 - Imnotanerd
1
我说错了,我想说的是 #include <gl/glfw.h>。记得在末尾加上 .h 是必要的。 - Rafe Kettler
我刚刚修好了。谢谢你提醒我。 :) 你知道答案吗? - Imnotanerd
2个回答

3
当您首先包含GLEW头文件时,会出现什么样的错误?
GLEW头文件定义了禁用大多数GL头文件的所有必要内容,因此在包含GLFW头文件之前包含GLEW头文件应该可以工作。我已经成功地在Linux、Windows和Mac OS X上使用原生GCC、Clang、MinGW、Cygwin和VC++多年了。这甚至是一个官方的常见问题解答:

http://www.glfw.org/faq.html#can-i-use-extension-loaders-with-glfw


你是否已经添加了自己的GLU头文件版本?我的VS 10安装程序在那个位置没有它的GLU头文件。无论如何,你可以通过GLFW_NO_GLU禁用GLU头文件的包含。 - elmindreda

1
主要的问题是 glfw.h 有一个明确的检查来测试 gl.h 是否已经被包含,如果已经包含,则会失败,而不是继续忽略那个“错误”。最后我只好在我的库的头文件中注释掉了那段代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接