【发布时间】:2013-01-28 19:38:08
【问题描述】:
我正在开发一个 OpenGL 程序来测试着色器并尝试编译它们。但是,对 glCreateShader() 的调用(以及其他着色器调用,如 glDeleteShader)会出现以下错误:
(此错误来自 glCreateShader())
Error 3 error LNK2001: unresolved external symbol _pglCreateShader
我正在使用 Visual Studio 2012 和 Windows 7。我有一张最新的 nvidia 卡,包括最新的驱动程序,所以不能是我的 OpenGL 版本。
我将 glTools 头文件用于 OpenGL Superbible 第 4 版的所有辅助函数。不确定使用这些文件是否有错误?
我会发布我的包含内容,以防这也有任何帮助。
#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 和包含添加到适当的文件夹中,所有功能都可以正常工作! :)
【问题讨论】:
-
glGetString(GL_VERSION) 返回什么?如果低于 2.0 版本,则 openGL 版本将不支持创建着色器。我不确定 glTools 标头包含什么。它或它的任何包含是否包含 glCreateShader() 的声明?
标签: c++ windows opengl linker shader