【问题标题】:Undefined reference to `_imp__glewInit@0'对 `_imp__glewInit@0' 的未定义引用
【发布时间】:2012-07-29 16:02:40
【问题描述】:

我已经多次构建了 glew 库。我的上一个版本删除了对所有着色器函数的未定义引用,例如glCreateShader()。我认为这个构建是正确的,因为我发现Code:Blocks 可以打开 Visual Studio 6.0 项目,所以它已经为我准备好了一切。

我可以在不调用 glewInit() 的情况下编译我的应用程序,但它会在调用 glCreateShader() 时导致 SEGFAULT。这是由于未初始化 glew 引起的。

我需要打开它,但它不会让我 XD

链接:mingw32、glew32、opengl32、glu32、glut32

IDE:代码::块

编译器:MinGW32

【问题讨论】:

    标签: c++ opengl codeblocks mingw32 glew


    【解决方案1】:

    省去很多麻烦,只需将glew.c 直接添加到您的项目中即可。我不明白为什么人们如此努力地与外部链接。许可证是友好的,它只有一个源文件。请记住#define GLEW_STATIC。

    【讨论】:

    • 我真的很好奇:为什么不呢?您为什么宁愿尝试将其作为外部库链接?制作一个 DLL 只是添加另一个运行时依赖项,并制作一个静态库......好吧,您只需添加一个文件。哈哈!
    • 为了组织起见,我的项目中没有更改的文件越少越容易,因为我很糟糕。但我最近不得不用图像加载器 XD 做同样的事情。 soooo...我无法拥有我想要的东西。特别是在c++ XD
    • 天哪,这篇文章 5 小时前在哪里?一份源文件……我的痛苦终于结束了!
    【解决方案2】:

    在使用它的库之后链接glew32。

    【讨论】:

    • 如果我在 opengl32 之后链接它,它将产生一堆对 wgl 函数的未定义引用。我想我已经尝试了所有排列 XD
    • @DavidMaloy 也许你使用的是静态库而不是声明GLEW_STATIC?
    • 我把它放在哪里。什么时候制作库?还是在标题的顶部?或在编译器选项中。我已经尝试过了,但如果我尝试了正确的地方,我会不以为然。
    • @DavidMaloy 通过 -DGLEW_STATIC gcc 选项或在“项目构建选项”->“编译器设置”->“#defines”中的代码::块中使用库时
    • 好吧,我不知道 gcc 选项是什么。我是在框中输入#define GLEW_STATIC 还是只输入 GLEW_STATIC,因为无论我输入什么都不会出错,所以它不会告诉我是否有问题。
    【解决方案3】:

    在 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 $@
    

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 2011-03-27
      • 2022-01-22
      • 2016-04-04
      • 2015-11-03
      • 2011-08-11
      • 2019-07-22
      • 2015-07-20
      • 2019-06-22
      相关资源
      最近更新 更多