Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Qt中使用OpenGL时出现链接器错误_Qt_Visual C++_Opengl_Linker - Fatal编程技术网

在Qt中使用OpenGL时出现链接器错误

在Qt中使用OpenGL时出现链接器错误,qt,visual-c++,opengl,linker,Qt,Visual C++,Opengl,Linker,我正在尝试将OpenGL与Qt结合使用。 我遵循这个示例:使用msvc2012的Qt5构建。最后,我得到了以下错误: 错误LNK2019:未解析的外部符号\u imp_glClear@4在函数“public:virtualvoid u thiscall OpenGLWindow::render(void)”中引用(?render@OpenGLWindow@@UAEXXZ)D:\Documents\Code\Qt Projects\qttest2\qttest2\openglwindow.obj

我正在尝试将OpenGL与Qt结合使用。 我遵循这个示例:使用msvc2012的Qt5构建。最后,我得到了以下错误:

  • 错误LNK2019:未解析的外部符号\u imp_glClear@4在函数“public:virtualvoid u thiscall OpenGLWindow::render(void)”中引用(?render@OpenGLWindow@@UAEXXZ)D:\Documents\Code\Qt Projects\qttest2\qttest2\openglwindow.obj qttest2
  • 错误LNK2001:未解析的外部符号\u imp_glClear@4D:\Documents\Code\Qt Projects\qttest2\qttest2\trianglewindow.obj qttest2
  • 错误LNK2019:未解析的外部符号\u imp_glDrawArrays@12在函数“public:virtualvoid\uu thiscall TriangleWindow::render(void)”中引用(?render@TriangleWindow@@UAEXXZ)D:\Documents\Code\Qt Projects\qttest2\qttest2\trianglewindow.obj qttest2
  • 错误LNK2019:未解析的外部符号\u imp_glViewport@16在函数“public:virtualvoid\uu thiscall TriangleWindow::render(void)”中引用(?render@TriangleWindow@@UAEXXZ)D:\Documents\Code\Qt Projects\qttest2\qttest2\trianglewindow.obj qttest2
  • 错误LNK1120:3个未解析的外部文件D:\Documents\Code\Qt Projects\qttest2\Win32\Debug\qttest2.exe qttest2
  • 我可以看出这与OpenGL函数的链接有关,但我对链接没有太多的了解


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

    您是否在pro文件中添加了OpenGL模块,如下所示:

    QT += opengl
    

    必须将
    opengl32.lib
    添加到链接库列表中。在QtCreator.pro文件中添加OpenGL模块应该可以做到这一点

    QT += opengl
    

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


    D:\Qt\5.5\mingw492\u 32\lib\libQt5OpenGL.a
    是路径。

    在linux环境中安装[mesa]库可以解决此问题。 [lib32 mesa,OpenGL规范的开源实现]

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

    谢谢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 for QtQuick。我将opengl32.lib添加到链接库列表中,这与visual studio相当。谢谢你的回答!我将datenwolf的回答标记为答案,因为我认为他是第一个。@MHA请您解释一下如何将opengl32.lib添加到链接库列表中。我使用MSVC2013作为我的编译器,Qt CreatorSadly no.我已经有一段时间没有处理这个问题了(差不多一年了)。你最好到别处去找解决办法:)祝你好运!我很想回答这个问题,但是自从我提出这个问题以来的四年让我忘记了实际的问题:)谢谢你,我希望它能帮助其他人。我很想回答这个问题,但是自从我提出这个问题以来的四年让我忘记了实际的问题:)谢谢你,我希望它能帮助其他人。这是一个想法,帮助开发人员寻找解决方案。
    [pacman -S mesa ]       *Arch Linux 
    [apt-get install mesa]  *ubuntu/Mint/Raspbian