gpt4 book ai didi

c++ - 使用 CodeBlocks 将 GLEW 链接到 SFML 项目时出现问题

转载 作者:太空狗 更新时间:2023-10-29 21:06:38 25 4
gpt4 key购买 nike

所以我正在尝试学习编写着色器并将它们合并到我的 OpenGL 程序中(我使用 SFML 1.6 创建有效的 OpenGL 环境,而不是乱搞 GLUT;我的 IDE 是 Codeblocks;我的卡支持 OpenGL 3.1 和 GLSL 1.3).但是,我遇到了障碍;看起来我需要 GLEW 来帮助将 GLSL 着色器合并到我的程序中。所以我去找 GLEW 的源代码并使用 CodeBlocks 将其编译为静态库,按照最后评论的说明 here (我将 #define GLEW_STATIC 添加到 c. 文件中,因为我不清楚我应该将它添加到哪里),所以我现在有四个 .a 文件:

libglew32.a, libglew32d.a, libglew32mx.a, libglew32mxd.a

我已经告诉我的编译器在哪里可以找到头文件(glew.h、glxew.h、wglew.h),并且我已经通过添加相关目录告诉链接器在哪里可以找到库(上面)到设置->编译器和调试器...->搜索目录。在我的项目中,在 Build Options->Linker Settings->Link Libraries 下,我还链接了上面的四个。

完成上述所有操作后,我在尝试调用 glewInit() 时遇到以下错误:

undefined reference to '_imp__glewInit'

一些 reading告诉我我需要添加 #define GLEW_STATIC之前#include <glew.h> ,所以我这样做了,现在我得到了一大堆对“wglGetProcAddress@4”错误的 undefined reference (我程序中唯一的 GLEW 代码行是 glewInit();):

 Design\Learning C++\OPEN-GL\OpenGL Experiment 6 - 27-block Terrain Test\main.cpp||In function 'int main()':|
Design\Learning C++\OPEN-GL\OpenGL Experiment 6 - 27-block Terrain Test\main.cpp|43|warning: unused variable 'LightOn'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `glGetString@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `wglGetProcAddress@4' follow|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetCurrentDC@0'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `wglGetProcAddress@4' follow|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `glGetString@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `glGetString@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| more undefined references to `wglGetProcAddress@4' follow|
C:\Program Files (x86)\CodeBlocks\MinGW\downloaded\glew-1.7.0\afiles\libglew32.a(glew.o):glew.c|| undefined reference to `wglGetCurrentDC@0'|
||=== Build finished: 23 errors, 1 warnings ===|

我很茫然;所有这一切的技术方面(链接/编译等)对我来说仍然是新的和令人困惑的。

我需要做什么才能让 GLEW 工作,以便我可以将 GLSL 着色器合并到我的 SFML OpenGL 项目中? (或者我可以在没有 GLEW 或任何其他外部库的情况下以某种方式更轻松地做到这一点吗?这太棒了!)

最佳答案

您还需要链接 opengl32.lib。缺少链接器提示的那些功能是 opengl32.dll 的一部分,要访问它,您需要链接它。不在静态库中,而是在您的最终程序中。从技术上讲,静态库与目标文件的存档完全不同,即编译阶段的结果。链接到 DLL 需要在可执行二进制文件的上下文中进行。

关于c++ - 使用 CodeBlocks 将 GLEW 链接到 SFML 项目时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7330486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com