【发布时间】: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} )
【问题讨论】:
-
为什么这被否决了?