首页 > 解决方案 > gl.h - 如何隐藏函数原型

问题描述

我在 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 不使用它。

标签: clinuxopengl

解决方案


使用定义重写原始名称:

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

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


推荐阅读