2

我想进入并学习 C++ 中的 OpenGL,并且正在使用 Code::Blocks。我能够让 freeglut 工作,以及几个在线示例(以及 CB 附带的示例)。但是,当我尝试为我正在关注的一些教程包含 GLEW 时,我收到以下编译器错误:

obj\Debug\main.o||In function `RenderSceneCB':|
C:\C Programs\OpenGL Test\main.cpp|12|undefined reference to `_imp____glewEnableVertexAttribArray'|
C:\C Programs\OpenGL Test\main.cpp|13|undefined reference to `_imp____glewBindBuffer'|
C:\C Programs\OpenGL Test\main.cpp|14|undefined reference to `_imp____glewVertexAttribPointer'|
C:\C Programs\OpenGL Test\main.cpp|18|undefined reference to `_imp____glewDisableVertexAttribArray'|
obj\Debug\main.o||In function `CreateVertexBuffer':|
C:\C Programs\OpenGL Test\main.cpp|34|undefined reference to `_imp____glewGenBuffers'|
C:\C Programs\OpenGL Test\main.cpp|35|undefined reference to `_imp____glewBindBuffer'|
C:\C Programs\OpenGL Test\main.cpp|36|undefined reference to `_imp____glewBufferData'|
||=== Build finished: 7 errors, 0 warnings (0 minutes, 0 seconds) ===|

无论我做什么,尝试什么建议,尝试链接什么其他文件,我都会不断收到同样的错误。我让其他人尝试了代码,他们说它工作得很好,但对我的 GLEW 设置有什么问题没有任何想法。

任何有任何想法的人,把它们扔给我。

我使用的是 Windows 7,Code::Blocks 12.11,并为 GLEW 1.9.0 下载了 Ming32 二进制文件。

我的链接器设置按以下顺序设置:

glew32 freeglut opengl32 glu32 winmm gdi32

4

2 回答 2

3

您的链接器设置有问题。你必须链接

glew32s.lib

不仅glew32.lib,您还必须链接glew32s.lib。确保它必须位于链接器列表的顶部。

编写代码时不要忘记定义

#define GLEW_STATIC

在源文件的顶部。

于 2013-06-05T03:12:23.640 回答
1

我昨天在https://open.gl/introduction上努力让 GLEW 示例工作, 我正在通过这些教程工作,发现设置环境始终是最困难的部分。我还使用带有 MinGW 的 Code:Blocks 并想进入 OpenGL。您将在下面找到自己构建 GLEW 和 SFML 的快速摘要,以及如何设置同时使用这两者的项目...

在经历了许多挫折之后,我下载了“glew-1.13.0.zip”(源 ZIP,我必须自己构建 GLEW)将 zip 文件内容复制到 C:\(这个路径现在应该可以工作了:C:\glew -1.13.0\build\cmake)

您将不得不为 Code:Blocks w/MinGW 构建 GLEW

我得到了自己的 CMake(谷歌它)

将 zip 文件内容复制到 C:\ (C:\CMake3.2.0\bin) 并运行 cmake-gui.exe

在 CMake 中找到:

源代码在哪里:C:\glew-1.13.0\build\cmake

在哪里构建二进制文件:C:\glew-1.13.0\ownbuild

单击配置(在我的情况下选择您的编译器“CodeBlocks - MinGW Makefiles”)单击生成(保留设置,只需按下按钮)

现在在 Code:Blocks 中打开 C:\glew-1.13.0\ownbuild\glew.cbp 并构建所有(快捷键是 Ctrl+F9 在 CodeBlocks :D )

构建成功后,您的 GLEW 已构建并为您的环境做好准备

///////// 开始 - SFML SIDE TRIP 由于我是 SFML 的粉丝,并且前面提到的教程支持它,您可能还想构建和使用 sfml

sfml 2-3-2(谷歌搜索)

  1. 从 openal.software.informer.com/3.0/ 安装 oal (oalinst.exe)
  2. 在 CMake 中:

源代码在哪里:C:/SFML-2.3.2 在哪里构建二进制文件:C:/SFML-2.3.2/build

检查 SFML_BUILD_EXAMPLES

3. 代码块:-build "all"

//////// 结束 - SFML 边路


现在你想使用 GLEW

在 code:blocks 中创建一个新的控制台应用程序(我称之为“GLEW_sample”)

右键单击它并选择构建选项

现在在 CB 中链接如下:

链接器设置:(我不喜欢保留相对路径)*像往常一样添加所有 SFML 库 C:\SFML-2.3.2\build\lib\ *从 system32 文件夹 C:\Windows\System32\ 添加 OPENGL.dll opengl32.dll *添加 GLEW 库 C:\glew-1.13.0\ownbuild\lib\

搜索目录: 编译器:C:\SFML-2.3.2\include C:\glew-1.13.0\include 链接器:C:\SFML-2.3.2\build\lib C:\glew-1.13.0\ownbuild\垃圾桶

这是来自上述教程 https://open.gl/content/code/c2_color_triangle.txt的源代码, 只需用它替换控制台应用程序中的代码即可。

现在您已经使用 Cmake 构建了 GLEW 和 SFML,并创建了一个带有工作源代码的项目。编译并享受

于 2016-06-16T09:24:17.037 回答