GLEW 库和代码::块

Posted

技术标签:

【中文标题】GLEW 库和代码::块【英文标题】:GLEW Library and Code::Blocks 【发布时间】:2015-10-24 16:49:16 【问题描述】:

我知道,我已经问过这个问题,但它被标记为重复,但没有其他问题得到对我有用的答案,所以我必须再次问这个问题,因为重复标志没有被删除在我编辑了这个问题之后。 所以这是我的问题(再次):

我对 Code::Blocks 有疑问。 我想尝试一些我学到的关于 OpenGL 的东西,因为我想用 Code::Blocks 来做这件事。

但每次我尝试链接库 (GLEW) 时,我都无法编译我的代码。

    obj\Debug\source\main.o:main.cpp:(.text+0x97): undefined reference to `ChoosePixelFormat@8'
    obj\Debug\source\main.o:main.cpp:(.text+0xad): undefined reference to `SetPixelFormat@12'
    obj\Debug\source\main.o:main.cpp:(.text+0xbb): undefined reference to `wglCreateContext@4'
    obj\Debug\source\main.o:main.cpp:(.text+0xd0): undefined reference to `wglMakeCurrent@8'
    obj\Debug\source\main.o:main.cpp:(.text+0xdf): undefined reference to `glMatrixMode@4'
    obj\Debug\source\main.o:main.cpp:(.text+0xe7): undefined reference to `glLoadIdentity@0'
    obj\Debug\source\main.o:main.cpp:(.text+0x103): undefined reference to `gluOrtho2D@32'
    obj\Debug\source\main.o:main.cpp:(.text+0x112): undefined reference to `glMatrixMode@4'
    obj\Debug\source\main.o:main.cpp:(.text+0x247): undefined reference to `GetStockObject@4'
    obj\Debug\source\main.o:main.cpp:(.text+0x439): undefined reference to `GetStockObject@4'
    obj\Debug\source\main.o:main.cpp:(.text+0x5b8): undefined reference to `wglMakeCurrent@8'
    obj\Debug\source\main.o:main.cpp:(.text+0x5c6): undefined reference to `wglDeleteContext@4'
    obj\Debug\source\main.o:main.cpp:(.text+0x64a): undefined reference to `wglMakeCurrent@8'
    obj\Debug\source\main.o:main.cpp:(.text+0x65a): undefined reference to `wglDeleteContext@4'
    obj\Debug\source\main.o:main.cpp:(.text+0x850): undefined reference to `glBegin@4'
    obj\Debug\source\main.o:main.cpp:(.text+0x893): undefined reference to `glColor3ub@12'
    obj\Debug\source\main.o:main.cpp:(.text+0x8a8): undefined reference to `glVertex2d@16'
    obj\Debug\source\main.o:main.cpp:(.text+0x8b0): undefined reference to `glEnd@0'

我在代码顶部包含了 GL/glew.h 和 GL/gl.h,链接器设置为: 1. ...\glew\lib\Release\x64\glew32s.lib 2. ...\glew\lib\Release\x64\glew32.lib

这是构建命令:

mingw32-g++.exe -LE:...\glew-1.13.0\include -o bin\Debug\TestProject.exe obj\Debug\source\main.o   ...\glew-1.13.0\lib\Release\x64\glew32s.lib ...\glew-1.13.0\lib\Release\x64\glew32.lib "...\glew-1.13.0\lib\Release MX\x64\glew32mxs.lib" "...\glew-1.13.0\lib\Release MX\x64\glew32mx.lib"

我尝试了以前问题的所有答案,但对我没有任何效果...即使我不使用任何 OpenGL 函数,我也会收到此错误。我知道这些错误是什么,并且如果它们来自我的代码,我会知道我应该做什么,但我现在不知道该怎么做。 请删除双后符号,因为推荐问题的答案对我没有帮助。

我真的希望你能帮助我。 谢谢。

【问题讨论】:

你链接到 opengl32.lib 了吗? What is an undefined reference/unresolved external symbol error and how do I fix it?的可能重复 下一步:您可以使用 glew 静态链接或动态链接,但永远不要同时使用。 除非您发布失败的完整链接器命令行,否则读者一无所知。您已发布链接器的错误消息,但尚未发布您告诉它执行的操作。当您运行失败的构建时,您会在 构建日志 选项卡(而不是 构建消息 选项卡)中找到链接器命令行。这将是错误开始之前的最后一个g++ 命令行。添加此信息在问题中 感谢您的 cmets。我添加了信息。谢谢你的提示。你提到的这个 opengl32.lib 文件是什么?我想我是静态链接的... 【参考方案1】:

在包含GL/glew.h 之前,您是否定义了GLEW_STATIC?同时转到编译器设置面板,并在其他选项中添加-DGLEW_STATIC

通过将glew32sopengl32 添加到链接器设置,确保您正确链接了库。

【讨论】:

感谢您的回答。是的,我确实定义了 GLW_STATIC 并添加了选项。 glew32s ist 添加,但 opengl32?这个文件在哪里? opengl32 已经存在于您的系统中,您只需通过将opengl32 添加到您的链接器设置来链接它。 谢谢。我不知道。现在可以了。即使 gcc 似乎无法处理 Library-Paths 中的“ä”...

以上是关于GLEW 库和代码::块的主要内容,如果未能解决你的问题,请参考以下文章

Qt 和 GLEW:程序以代码 -1073741515 退出

GLEW发出一堆无可争议的错误[关闭]

编译 GLEW/SDL 程序时出错

Glew 未初始化

GLEW 链接器错误

构建成功,但尝试运行程序时出现 GLEW 错误