OpenGL链接错误?未解析的外部glCreateShader()

时间:2013-01-28 19:38:09

标签: c++ windows opengl linker shader

我正在研究一个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和includes添加到相应的文件夹中,所有功能都可以正常工作! :)

2 个答案:

答案 0 :(得分:3)

抓取GLEW的副本以处理扩展加载。

这样做by hand是......很烦人。

答案 1 :(得分:2)

在Windows上,您使用WGL,并且在使用WGL时,您不能直接链接GL功能。你得到的所有功能都是these;您应该使用wglGetProcAddress(如here中)动态抓取指向GL输入点的指针,然后才能使用它们。

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