使用CodeBlocks将GLEW链接到SFML项目的问题
Problems linking GLEW into SFML project using CodeBlocks
所以我试图学习编写着色器并将它们合并到我的OpenGL程序中(我使用SFML 1.6来创建一个有效的OpenGL环境,而不是与GLUT打交道;我的IDE是代码块;我的卡支持OpenGL 3.1和GLSL 1.3)。然而,我遇到了一个障碍;看起来我需要GLEW来帮助将GLSL着色器合并到我的程序中。所以我去找GLEW的源代码,并使用CodeBlocks将其编译为静态库,按照这里最后注释的指示(我将#define GLEW_STATIC
添加到c.文件中,因为我不清楚应该在哪里添加它),所以我现在有四个。a文件:
libglew32。libglew32d。libglew32mx。一个,libglew32mxd.a
我已经告诉我的编译器在哪里找到头文件(glew.h, glxew.h, glew.h),我已经告诉链接器在哪里找到库(上面),通过添加相关目录Settings-> compiler &调试器……->搜索目录。在我的项目中,在构建选项->链接器设置->链接库下,我也链接了上面四个。
执行上述所有操作后,我在尝试调用glewInit()时得到以下错误:对'_imp__glewInit'的未定义引用
一些阅读告诉我,我需要在#include <glew.h>
之前添加#define GLEW_STATIC
,所以我这样做了,现在我得到了一大堆对"wglGetProcAddress@4"错误的未定义引用(我的程序中唯一的GLEW代码行是glewInit();
):
DesignLearning C++OPEN-GLOpenGL Experiment 6 - 27-block Terrain Testmain.cpp||In function 'int main()':|
DesignLearning C++OPEN-GLOpenGL Experiment 6 - 27-block Terrain Testmain.cpp|43|warning: unused variable 'LightOn'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `glGetString@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| more undefined references to `wglGetProcAddress@4' follow|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetCurrentDC@0'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| more undefined references to `wglGetProcAddress@4' follow|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `glGetString@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `glGetString@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| undefined reference to `wglGetProcAddress@4'|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.a(glew.o):glew.c|| more undefined references to `wglGetProcAddress@4' follow|
C:Program Files (x86)CodeBlocksMinGWdownloadedglew-1.7.0afileslibglew32.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++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在 CLion 中构建 C++ 项目
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- 编译器现在遵循C++14标准,我的项目不再编译神秘的SFML错误
- 什么最适合用于优化SFML项目?
- 我的项目中某些仅标头文件不能包含使用 CMake 和 Vscode 的"SFML/Graphics.hpp"
- 静态链接 Visual Studio dll 到动态链接的 sfml 项目
- 无法为编译 SFML 项目创建 cmake 规则
- 与GitHub上的C 项目的可视同步SFML
- 使用静态SFML库时无法链接我的项目
- CodeBlocks中的SFML项目不起作用
- 我的SFML项目在约10秒后崩溃
- C - 具有相同设置的新SFML项目
- 编译SFML 2.0项目时加载共享库时出错
- SFML中项目符号生成错误
- C: 用户约书亚桌面游戏项目 SFML项目测试渲染.cpp | 15 |错误:'类s
- 使用CodeBlocks将GLEW链接到SFML项目的问题
- Visual c++项目在用SFML加载纹理时意外崩溃
- 使用SFML构建c++项目时未定义的引用
- 其他人如何在没有Visual Studio的情况下运行我的SFML / C++项目