3

我正在开发一个 OpenGL 程序来测试着色器并尝试编译它们。但是,对 glCreateShader() 的调用(以及其他着色器调用,如 glDeleteShader)会给出以下错误:

(此错误来自 glCreateShader())

Error   3   error LNK2001: unresolved external symbol _pglCreateShader  

我正在使用 Visual Studio 2012 和 Windows 7。获得了最新的 nvidia 卡之一,包括最新的驱动程序,所以不能是我的 OpenGL 版本。

我正在为 OpenGL Superbible 第 4 版的所有辅助函数使用 glTools 头文件。不确定使用这些文件是否有错误?

我会发布我的包含内容,以防这也有任何帮助。

#pragma once

#include <Windows.h>

// Basic C++ includes
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <vector>
using namespace std;

// OpenGL specific and GUI includes
#include "shared/gltools.h"
#include "shared/math3d.h"
#include <SOIL.h>

和链接器选项:

soil.lib;opengl32.lib;gltools.lib;


好的,由于答案,问题已解决:

我编辑了我的 glTools.h 以包含“gl/glew.h”而不是“glee.h”,在我的链接器中添加了一个 ;glew32.lib 选项,并在进入主循环之前添加了 glewInit()。我还将 GLEW 库、dll 和包含添加到适当的文件夹中,所有功能都可以正常工作!:)

4

2 回答 2

3

获取 GLEW的副本来处理扩展加载。

手动操作……烦人。

于 2013-01-28T19:41:04.043 回答
2

在 Windows 上,您使用 WGL,而在使用 WGL 时,您不能直接链接到 GL 函数。你得到的所有功能都是这些;您应该在使用它们之前动态地获取指向您想要的 GL 入口点的指针wglGetProcAddress(如此)。

基本上,如果您手动加载 GL 入口点函数指针,Windows 上的 OpenGL 就是一个 PITA。使用实用程序库为您获取指针要容易得多,例如GLEW

于 2013-01-28T19:43:59.980 回答