【问题标题】:gl.h - how to hide function prototypesgl.h - 如何隐藏函数原型
【发布时间】: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_LEGACYGLX_GLXEXT_LEGACY宏以避免Linux头文件无意包含系统提供的glext.h跨度>
  • GL_GLEXT_LEGACY 在这里不适用
  • 如果这是针对 C++ 的,那么使用命名空间怎么样?
  • C,可惜系统gl.h没有提供像GL_GLEXT_PROTOTYPES这样的选项

标签: c linux opengl


【解决方案1】:

使用define重写原来的名字:

#define glActiveTextureARB glh__glActiveTextureARB
#include<gl.h>
#undef glActiveTextureARB

顺便说一句,你的gl.h 可能已经将PFNGLACTIVETEXTUREARBPROC 定义为你想要的函数指针类型,所以你不需要重新定义它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多