C++ VS2012 express中未定义OpenGL函数

C++ VS2012 express中未定义OpenGL函数,c++,opengl,visual-studio-2012,C++,Opengl,Visual Studio 2012,我试图在Visual Studio 2012 express中使用一些OpenGL函数,我的代码如下所示: #include <Windows.h> #include <iostream> #include <gl/GL.h> #include <fstream> void saveScreen() { //code to define some variables, nWidth, nHeight and Buffer. glreadbuf

我试图在Visual Studio 2012 express中使用一些OpenGL函数,我的代码如下所示:

#include <Windows.h>
#include <iostream>
#include <gl/GL.h>
#include <fstream>

void saveScreen()
{
 //code to define some variables, nWidth, nHeight and Buffer.

glreadbuffer ( GL_BACK ); //which buffer we are reading from.
glreadpixels ( 0, 0, nWidth, nHeight, GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *Buffer); 
//do something with buffer data
return;

}
#包括
#包括
#包括
#包括
作废保存屏幕()
{
//代码定义一些变量,nWidth,nHeight和Buffer。
glreadbuffer(GL_BACK);//从哪个缓冲区读取。
glreadpixels(0,0,nWidth,nHeight,GL_RGB,GL_无符号字节,(GLvoid*缓冲区);
//处理缓冲区数据
返回;
}
根据互联网研究,我的代码是正确的,除了glreadpixels显然希望有更多的表达式和“,”,但我认为我自己可以解决这个问题

当我尝试编译和运行时,会出现错误,说glreadbuffer和glreadpixels都未定义。除了#包括windows.h和gl/gl.h和OpenGL应该可以工作之外,我找不到任何东西告诉我该做什么

提前感谢您的帮助:)

编辑:

感谢回复,我在链接器的附加依赖项中添加了以下行:

opengl32.lib glu32.lib

并正确地将函数调用大写
这似乎解决了问题。

OpenGL中不存在函数
glreadbuffer()
glreadpixels
。API使用CamelCase函数名样式,因此这些函数名拼写为
glReadBuffer()
glReadPixels()

这就是在visual studio 12中正确链接的方式:

首先创建一个名为“dev”(或任何名称)的文件夹。在该文件夹中,您提取“freeglut”(仅当您需要一个窗口工具包时)和“glew”(openGL扩展wrangler,这将加载gl函数)

然后在VS12中打开一个新项目,右键单击项目->属性 在VC++属性下,单击“包含目录”,并将路径添加到dev/glew/Include文件夹和dev/freeglut/Include。确保您的路径100%正确! 然后单击“库目录”并添加这两个路径:dev/glew/lib和dev/freeglut/lib

然后转到C/C++并单击其他include目录并添加这两个路径:dev/glew/include和dev/freeglut/include。 然后转到链接器并在“附加库目录”中添加库文件夹这是一个棘手的问题,因为您需要链接到正确的版本:\dev\glew\lib\Release\Win32

然后再次尝试您的代码,如果不起作用,请尝试来自internet的源代码。 此外,如果您复制了文件夹而未更改其名称,则应包括“GL/glew.h”
这些步骤对于使用openGL的每个项目都是必需的。

您也需要链接openGL库(它提供函数的定义)。仅供参考:Windows和非MacOS X Unix和Linux上的openGL头的情况是
GL/GL.h
而不是相反(这在Windows上并不重要,但在MacOS X上它是
OpenGL/gl.h