【问题标题】:Linker errors when using OpenGL in Qt在 Qt 中使用 OpenGL 时出现链接器错误
【发布时间】:2013-02-03 21:04:50
【问题描述】:

我正在尝试将 OpenGL 与 Qt 一起使用。 我在关注这个例子:http://qt-project.org/doc/qt-5.0/qtgui/openglwindow.html using Qt 5 build for msvc2012。最后我得到以下错误:

  1. 错误 LNK2019:未解析的外部符号 _imp_glClear@4 在函数“public: virtual void __thiscall OpenGLWindow::render(void)”(?render@OpenGLWindow@@UAEXXZ) D:\ Documents\Code\Qt Projects\qttest2\qttest2\openglwindow.obj qttest2
  2. 错误 LNK2001:无法解析的外部符号 _imp_glClear@4 D:\Documents\Code\Qt Projects\qttest2\qttest2\trianglewindow.obj qttest2
  3. 错误 LNK2019:未解析的外部符号 _imp_glDrawArrays@12 在函数“public: virtual void __thiscall TriangleWindow::render(void)”(?render@TriangleWindow@@UAEXXZ) D:\ Documents\Code\Qt Projects\qttest2\qttest2\trianglewindow.obj qttest2
  4. 错误 LNK2019:未解析的外部符号 _imp_glViewport@16 在函数“public: virtual void __thiscall TriangleWindow::render(void)”(?render@TriangleWindow@@UAEXXZ) D:\ Documents\Code\Qt Projects\qttest2\qttest2\trianglewindow.obj qttest2
  5. error LNK1120: 3 unresolved externals D:\Documents\Code\Qt Projects\qttest2\Win32\Debug\qttest2.exe qttest2

我可以看到它与OpenGL函数的链接有关,但我对链接的了解不多。

即使我从 OpenGLWindow 示例中复制源代码,也会出现错误。

【问题讨论】:

    标签: qt visual-c++ opengl linker


    【解决方案1】:

    您必须将opengl32.lib 添加到链接库列表中。在 QtCreator .pro 文件中添加 OpenGL 模块应该可以解决问题

    QT += opengl
    

    【讨论】:

    • 谢谢 datenwolf!我认为在使用 Gtgui 时 Qt 项目模板会解决这个问题,但显然不是。
    • 你知道使用Qt Visual Studio插件时是否使用了.pro文件吗?据我了解,.pro 文件与 QtCreator 应用程序有关。
    • @MHA:当然,在 Visual Studio 中,您必须使用该编译器/链接器设置。 Qt 被分隔在几个库中,其中一个是 qtopengl.{so,dll},因此您必须添加它,即链接器文件,即 qtopengl.lib 和 opengl32.lib(或 libGL.so)。 (或者任何 DLL/LIB 的确切名称。我通常使用 CMake,而 Qt CMake 模块为我完成了所有繁重的工作:P)
    • 您好,您能澄清一下您的帖子吗?我有同样的问题,但在 .pro 文件中添加“opengl”并没有解决问题。我使用 MSVC2013 作为我的编译器。如何将这些库链接到它?
    • @user929404:首先你必须确保你有一个真正支持 OpenGL 的 Qt5 版本。用于 MSVC 的默认预构建 Qt5 包是在没有 OpenGL 支持的情况下构建的,并且内部使用 ANGLE 用于 QtQuick。 qt-project.org/forums/viewreply/107114
    【解决方案2】:

    你有没有像这样在你的 pro 文件中添加 OpenGL 模块:

    QT += opengl
    

    【讨论】:

    • 我将 opengl32.lib 添加到链接库列表中,这与 Visual Studio 等效。谢谢你的回答!我将 datenwolf 的回复标记为答案,因为我认为他是第一个。
    • @MHA 请您解释一下您是如何将 opengl32.lib 添加到链接库列表中的。我使用 MSVC2013 作为 Qt Creator 的编译器
    • 遗憾的是没有。自从我处理这个问题以来已经有一段时间了(差不多一年)。你最好在别处寻找解决方案:)祝你好运!
    【解决方案3】:

    如果您使用 Qt 5,则在项目文件 (*.pro) 中添加下一个库

    LIBS += -LD:\Qt\5.5\mingw492_32\lib\libQt5OpenGL.a -lopengl32
    

    D:\Qt\5.5\mingw492_32\lib\libQt5OpenGL.a 是路径。

    【讨论】:

    • 我很想回答这个答案,但是自从我提出这个问题以来的四年里,我已经忘记了实际的问题 :) 谢谢你,我希望它可以帮助别人。
    【解决方案4】:

    在linux环境[mesa]库安装可以解决这个问题。 【lib32-mesa,OpenGL规范的开源实现】

    [pacman -S mesa ]       *Arch Linux 
    [apt-get install mesa]  *ubuntu/Mint/Raspbian 
    

    【讨论】:

    • 我很想回答这个答案,但是自从我提出这个问题以来的四年里,我已经忘记了实际的问题 :) 谢谢你,我希望它可以帮助别人。
    • 这是一个想法,可以帮助开发人员寻找解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多