在VIsual studio 2010 express中使用GLEW,SDL和OpenGL的未解析的外部符号

TTT*_*TNL 7 c++ opengl glew sdl

我正在使用这个 OpenGL教程.我使用SDL来创建窗口,现在我需要使用glew(请参阅本教程底部的另外一个部分).但无论我链接,包括,复制或定义所有我得到的是未解决的外部符号错误.

我有:

  • 将我的项目链接到GLEW Lib文件夹
  • 在我的包含路径中添加了include文件夹
  • 将include,bin和lib文件复制到适当的映射中的C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A \
  • 将glew32.dll和glew32mx.dll复制到我的system32文件夹
  • 包含和定义不同的文件(见截图2)

我会让截图进行说话,我忘记了什么?

截图:

应该去这里,但由于新的用户规则,我不能在这里包括它们.这是一个链接

fis*_*ood 0

我认为您需要链接到glew32sd.lib或glew32s.lib(取决于调试或发布构建配置),因为您已经定义了GLEW_STATIC。

这是我们最近完成的 win32 glew 应用程序上的预编译标头的片段。它显示了我们链接到的库:

#pragma comment( lib, "OpenGL32.lib")
#pragma comment( lib, "GLu32.lib")
#pragma comment( lib, "freeglut_static.lib")

#define GLEW_STATIC

#if defined _DEBUG
    #pragma comment(lib, "glew32sd.lib")
#else
    #pragma comment(lib, "glew32s.lib")
#endif

#include <GL\glew.h>
#include <gl\GL.h>
#include <gl\GLU.h>
Run Code Online (Sandbox Code Playgroud)

请注意,我们使用了glew32s.lib 和glew32sd.lib(调试等效项),我认为这是glew 的静态库。

如果您正确引用了库并包含文件夹,我能想到的唯一其他问题是您可能需要将 dll 文件复制到项目的输出文件夹中。

例如,如果您的项目构建到 c:\MyProject\Debug\MyProject.exe,请将 dll 复制到 c:\MyProject\Debug。

我希望这有帮助。

  • 使用 `pragma comment(lib` 是一个非常坏的习惯。这个 pragma 是非标准的,不可移植的,而且它迫使你以错误的方式思考。链接库是链接器的工作,所以将库引用干扰到 C++ 代码中是从长远来看这是一个坏主意。帮自己一个忙,通过将库添加到项目设置中来正确链接。或者更好的是,学习体面的构建系统 - cmake/qmake - 可以按需生成项目文件 - 因为很可能你不会永远使用 Visual Studio。 (2认同)