【问题标题】:FindQt4 fails to link QtOpenGL project properlyFindQt4 无法正确链接 QtOpenGL 项目
【发布时间】:2013-06-07 17:43:08
【问题描述】:

使用 QtOpenGL 的项目无法链接到 gl 调用,但 在 Windows 上(Linux 很高兴)。以下最小案例项目的 MSVC 2008 错误消息是:

1>gllink.obj : error LNK2019: unresolved external symbol __imp__glLoadIdentity@0 referenced in function "protected: virtual void __thiscall ImageWidget::initializeGL(void)" (?initializeGL@ImageWidget@@MAEXXZ)
1>gllink.obj : error LNK2019: unresolved external symbol __imp__glMatrixMode@4 referenced in function "protected: virtual void __thiscall ImageWidget::initializeGL(void)" (?initializeGL@ImageWidget@@MAEXXZ)
1>gllink.exe : fatal error LNK1120: 2 unresolved externals

当我手动将“opengl32.lib”添加到“附加依赖项”列表时,这些错误消失了,但我认为这不是必需的,因为这应该由 FindQt4.cmake 完成,或者应该由QtOpenGL 对 opengl32 的依赖。当然,我一定是弄错了,所以我非常感谢一些关于如何正确修复这个项目的意见。

gllink.cpp

#include <QtOpenGL>
#include <QWidget>

class ImageWidget : public QGLWidget
{
public:
   ImageWidget(QWidget* parent = 0) :
      QGLWidget(parent)
   {
   }

protected:
   void initializeGL()
   {
      glMatrixMode( GL_MODELVIEW );
      glLoadIdentity();
   }
};

int main()
{
   ImageWidget w;
   return 0;
}



CMakeLists.txt

PROJECT( gllink )
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )

FIND_PACKAGE( Qt4 4.6.0 REQUIRED COMPONENTS QtCore QtGui QtOpenGL )
INCLUDE( ${QT_USE_FILE} )

ADD_EXECUTABLE( gllink gllink.cpp )
TARGET_LINK_LIBRARIES( gllink ${QT_LIBRARIES} )

【问题讨论】:

  • 为什么这被否决了?

标签: qt opengl linker cmake


【解决方案1】:

FindQt4 不处理,你必须自己搜索 OpenGL。现在 CMake 提供了一个 FindOpenGL 包,因此修复您的项目只需添加 find_package( OpenGL ) 并将库链接到您的目标:

PROJECT( gllink )
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )

FIND_PACKAGE( OpenGL )

FIND_PACKAGE( Qt4 4.6.0 REQUIRED QtCore QtGui QtOpenGL )
INCLUDE( ${QT_USE_FILE} )

ADD_EXECUTABLE( gllink gllink.cpp )
TARGET_LINK_LIBRARIES( gllink ${OPENGL_LIBRARIES} ${QT_LIBRARIES} )

顺便说一句,您应该检查是否真的找到了这些库,如果没有找到,请警告用户问题:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多