Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
FindQt4无法正确链接QtOpenGL项目_Qt_Opengl_Linker_Cmake - Fatal编程技术网

FindQt4无法正确链接QtOpenGL项目

FindQt4无法正确链接QtOpenGL项目,qt,opengl,linker,cmake,Qt,Opengl,Linker,Cmake,使用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)" (?

使用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


FindQt4不能解决这个问题,你必须自己搜索OpenGL。现在,CMake提供了一个FindPengl包,因此修复您的项目只需添加
find\u包(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} )

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

为什么这被否决了?
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} )
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} )