对“_imp__glewInit@0”的未定义引用

10
我已经构建了glew库很多次。我的最后一次构建消除了所有着色器函数的未定义引用,例如glCreateShader()。我认为这个构建是正确的,因为我发现Code:Blocks可以打开Visual Studio 6.0项目,所以它为我提供了所有的布局。
我可以编译我的应用程序而不调用glewInit(),但当调用glCreateShader()时,会导致SEGFAULT。这是由于没有初始化glew造成的。
我需要打开它,但它不让我XD。
链接:mingw32、glew32、opengl32、glu32、glut32
IDE:Code::Blocks
编译器:MinGW32
3个回答

22

为了避免麻烦,直接将glew.c添加到您的项目中即可。我不理解为什么有些人要费力地外部链接它。该许可证友好且只有一个源文件。只需记得#define GLEW_STATIC


1
我真的很好奇:为什么不呢?你为什么宁愿尝试将其链接为外部库?制作DLL只会增加另一个运行时依赖项,而制作静态库...嗯,你只需要添加一个文件。哈哈! - TheBuzzSaw
为了组织起见,我在项目中尽量减少不需要更改的文件数量,因为我很菜。但最近我也不得不对图像加载器做同样的事情XD。所以...我不能得到我想要的。特别是在C++中XD。 - Kaliber64
1
天哪,这篇文章在五个小时前在哪里?一个源文件...我的煎熬终于结束了! - Joseph Thomson

0
将使用它的库链接到 glew32 之后。

如果我在opengl32之后链接它,它会产生一堆未定义的wgl函数引用。我想我已经尝试了所有排列组合XD。 - Kaliber64
1
也许您正在使用静态库,但没有声明 GLEW_STATIC - yuri kilochek
我应该把它放在哪里?是在制作库时?还是放在头文件的顶部?或者是在编译器选项中?我已经尝试过了,但不确定我是否尝试了正确的地方。 - Kaliber64
@DavidMaloy 当使用lib时,可以通过-DGLEW_STATIC gcc选项或在code::blocks中的“项目构建选项”->“编译器设置”->“#defines”来使用它。 - yuri kilochek
我不知道gcc选项是什么,所以我应该在框中输入#define GLEW_STATIC还是只输入GLEW_STATIC?因为无论我输入什么都没有出现错误,所以它不会告诉我是否有问题。 - Kaliber64
显示剩余2条评论

0
在Ubuntu 18.04中,要使用OpenGL,必须安装GLEW:
apt-get install libglew-dev   

当在链接器调用中添加链接器选项“-lGLEW”时,它可以正常工作,就像FLTK的Makefile中一样:

...
# HOW TO LINK
.o$(EXEEXT):
  @echo "*** Linking $@..."
  $(CXX) $< $(LINKFLTK_ALL) -lGLEW -o $@

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接