【问题标题】:How can I change an OpenGL source code file?如何更改 OpenGL 源代码文件?
【发布时间】:2014-10-29 03:29:34
【问题描述】:

我有一个名为 wglew.h 的 OpenGL 文件,我是从 http://glew.sourceforge.net/ 下载的。使用我下载的 wglew.h,在编译我拥有的程序时收到以下错误(我使用的是 MacOSX):

/Users/Downloads/glew-1.11.0/include/GL/wglew.h:70:10: fatal error:'windows.h' file not found

我正在尝试返回该文件的源代码并将其依赖项从 windows.h 更改为我的 Mac 可以识别的内容。 wglew.h文件中的源代码sn-p为:

#if !defined(WINAPI)
#  ifndef WIN32_LEAN_AND_MEAN
#    define WIN32_LEAN_AND_MEAN 1
#  endif
#include <windows.h>
#  undef WIN32_LEAN_AND_MEAN
#endif

是否可以解决此 windows.h 依赖项,以便我的程序在此步骤不会出错?我在Where can I get windows.h for Mac? 询问了一个关于并行概念的类似但不相同的问题,也许我可以尝试设计一种更微妙的方法来更改wglew.h 文件中的源代码以使我的程序工作并适应我遇到的 Windows 依赖项?

【问题讨论】:

  • @genpfault 我试图在 Mac 上编译的程序使用 OpenGL,我在 Windows 中制作了程序的 GUI 部分。 OpenGL 在 Windows 上是原生的,所以在 Mac 上我从glew.sourceforge.net 下载必要的 OpenGL 组件但是,正如您所见,wglew.h 文件中有一个 windows 依赖项。
  • 这显然是 MS windows 包含文件。您可能想要获取 OSX 的 glew 包含文件。更好的是,下载 整个 库,然后按照安装过程进行操作,因为您很可能需要该库才能生成工作可执行文件。
  • @white_rabbit:OpenGL 在 MacOS X 上也是原生的。事实上,MacOS X 的整个图形系统都使用了 OpenGL。整个 MacOS X 用户界面使用 OpenGL。 OpenGL 是 MacOS X 操作系统基础的一部分。您无需安装任何东西即可在 MacOS X 上获取 OpenGL。但是,由于 OpenGL 深深嵌入在 MacOS X 中,这意味着您需要完整的操作系统升级才能升级可用的 OpenGL 版本。

标签: windows macos opengl


【解决方案1】:

我们又来了:GLEW 不是 OpenGL 的一部分。这是一个第三方库。

MacOS X 上不需要 GLEW!

你找错树了!

而不是尝试修复 GLEW(您不必这样做)。只需将您的程序修复为在为 MacOS X 编译时不使用 GLEW。

在你的程序中你可以找到的任何地方

#include <glew.h>

#include <GL/glew.h>

把它改

#ifndef __APPLE__
#include <GL/glew.h>
#else
#include <OpenGL/gl.h>
#endif/*__APPLE__*/

将调用 GLEW 函数的所有事件放在一个之间

#ifndef __APPLE__
…
#endif/*__APPLE__*/

也阻止。

你不需要在 MacOS X 上使用 GLEW! 不要在那里使用它。

【讨论】:

  • 当我用 wgl.h 替换 wglew.h 时,我现在得到一个 fatal error: 'OpenGL/wgl.h' file not found。也许我换错了?
  • @white_rabbit:看在 Bob 的份上,你在代码的任何地方写了wglew.h?永远不要使用wglew.h,即使在为Windows 编译时也不要。使用 GLEW 时,仅使用 glew.h 而不使用其他任何东西。看我的回答,你用OpenGL/gl.h(里面没有W)。
  • @white_rabbit:为了明确这一点,wglew.hwgl.h 是用于访问与 OpenGL 相关的 Microsoft Windows 特定帮助程序 API(创建 OpenGL 上下文等)的头文件。因此,包括这些标头会使代码固有地锁定为 Windows 编译。对于跨平台代码,您根本不能使用这些标头。我认为这是您原始问题的一部分,您使用 这些 标头,而不是便携式标头。
  • 我现在实际上正在考虑使用 glut 而不是 glew 来解决这些问题(因为原始 GUI 是在 Windows 操作系统上开发的,因此出现了 wglew 问题)。你怎么看?
  • 通过重写 glut,我根本不会使用 wglew。我将在 Windows 上进行重写,然后将其移植到 Mac 上。你有什么建议最好使用来实现这种交叉兼容性:stackoverflow.com/questions/19719055/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多