在简短的OpenGL代码中编译错误:'PFNGLBINDPROGRAMARB':未声明的标识符

时间:2014-07-26 22:21:16

标签: opengl visual-studio-2012 compiler-errors

短代码如下:

#include <windows.h>
#include <GL/gl.h>
#include <GL/glext.h>
int main(int argc, char** argv)
{
    PFNGLBINDPROGRAMARBPROC glBindProgramARB;
    glBindProgramARB=(PFNGLBINDPROGRAMARB)wglGetProcAddress("glBindProgramARB");
}

编译时出现编译错误:error C2065: 'PFNGLBINDPROGRAMARB' : undeclared identifier.

我检查了头文件glext.h,但PFNGLBINDPROGRAMARBPROC就在其中(第2922行)。我不知道所以在这里发表我的问题寻求帮助。

我使用Visual Studio 2012并检查了include目录设置。其他系统信息:Windows 7 64位,安装了最新驱动程序的nVidia Geforce卡。如果您需要任何其他相关信息,请询问。

它是编译错误,而不是链接错误,因此它与扩展函数glBindProgramARB的存在无关(它确实存在于我的系统中,我使用glutGetProcAddress检查过)。

我知道FreeGlut和GLEW库函数可以帮助我做同样的事情。但我只是想知道为什么上面的代码无法通过编译器以及如何修复它。

1 个答案:

答案 0 :(得分:2)

PFNGLBINDPROGRAMARBPROC已定义,但PFNGLBINDPROGRAMARB未定义。您在声明中使用这两个中的第一个,但在类型转换中使用第二个:

PFNGLBINDPROGRAMARBPROC glBindProgramARB;
glBindProgramARB=(PFNGLBINDPROGRAMARB)wglGetProcAddress("glBindProgramARB");