【发布时间】:2021-02-26 12:44:21
【问题描述】:
我在 Linux 上工作。有一个包含 gl.h 的遗留 OpenGL 应用程序。我想定义一个函数指针来存储 glXGetProcAddress 结果:
typedef void (GLACTIVETEXTUREARB)(GLenum texture);
extern GLACTIVETEXTUREARB glActiveTextureARB;
但我收到以下错误:将 glActiveTextureARB 重新定义为不同类型的符号,之前的定义:gl.h:1966
我必须包含 gl.h,因为它包含基本类型定义,例如 GLenum。如何隐藏该函数原型? glext.h 基于 GL_GLEXT_PROTOTYPES 定义函数原型,但 gl.h 不使用它。
【问题讨论】:
-
不知道它是否适用于这个特定问题,但您也可以尝试定义
GL_GLEXT_LEGACY和GLX_GLXEXT_LEGACY宏以避免Linux头文件无意包含系统提供的glext.h跨度> -
GL_GLEXT_LEGACY 在这里不适用
-
如果这是针对 C++ 的,那么使用命名空间怎么样?
-
C,可惜系统gl.h没有提供像GL_GLEXT_PROTOTYPES这样的选项