如何用Qt解决链接错误?

时间:2010-12-14 13:31:49

标签: qt linker

我是Qt的新手,并尝试使用Microsoft的“CL.exe”编译和链接一个简单的“Hello,World”程序。关于如何做到这一点的任何建议?

该计划是:

#include <QtGui>

int main ( int argc, char * argv [] )
    {
    QApplication app ( argc, argv ) ;
    QLabel label ( "Hello, world!" ) ;
    label.show() ;
    return app.exec() ;
    }

我编译并链接:

C:\PROGRA~1\MICROS~1.0\VC\bin\cl.EXE -nologo -Zm200 -Zc:wchar_t- -O2 -MD ^
-W3 -w34100 -w34189 -DUNICODE ^
-DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB ^
-DQT_THREAD_SUPPORT -DQT_NO_DYNAMIC_CAST ^
-I"C:\Qt\2010.05\qt\include\QtCore" ^
-I"C:\Qt\2010.05\qt\include\QtGui" ^
-I"C:\Qt\2010.05\qt\include" ^
-I"." ^
-I"C:\Qt\2010.05\qt\include\ActiveQt" ^
-I"release" ^
-I"C:\Qt\2010.05\qt\mkspecs\win32-msvc2008" ^
-I"C:\Progra~1\MICROS~1.0\VC\include" ^
Hello.cpp ^
/link /LIBPATH:"C:\Qt\2010.05\qt\lib" ^
/LIBPATH:"C:\Progra~1\MICROS~1.0\VC\lib" ^
/LIBPATH:"C:\Progra~1\MID05A~1\VC\PLATFO~1\Lib"

我的链接器错误包括:

Hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) pub
lic: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplicatio
n@@UAE@XZ) referenced in function _main
Hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) pub
lic: virtual __thiscall QLabel::~QLabel(void)" (__imp_??1QLabel@@UAE@XZ) referen
ced in function _main
Hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) pub
lic: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAH
XZ) referenced in function _main
Hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) pub
lic: void __thiscall QWidget::show(void)" (__imp_?show@QWidget@@QAEXXZ) referenc
ed in function _main
.
.
.

我的Hello.pro文件包含:

######################################################################
# Automatically generated by qmake (2.01a) Mon Dec 13 15:58:13 2010
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH += .
INCLUDEPATH += .

# Input
SOURCES += Hello.cpp

3 个答案:

答案 0 :(得分:0)

你应该链接QtCore和QtGui库,但你没有。你的.pro文件是什么样的?


在.pro文件发布后编辑添加:您的.pro文件看起来很好。您没有覆盖默认包含QT的{​​{1}}变量,这应该导致QtCode和QtGui被链接到。事实上,QtCore和QtGui都存在于你的包含路径中。

我没有使用带有Qt的cl.exe,但您可以尝试添加core gui以强制链接到QtCore和QtGui。 (虽然可能有一个更优雅的解决方案。)

答案 1 :(得分:0)

您的PATH应包含qt / bin目录。在Visual Studio命令提示符中,您应该执行“qmake hello.pro”,它创建三个makefile,然后“nmake”。如果要使用vcxproj文件,则应将TEMPLATE更改为 vcapp

答案 2 :(得分:0)

  

尝试编译和链接一个简单的   “你好,世界”节目使用   微软的“CL.exe”

嘿,我认为有更简单的方法可以在visual studio上编译qt应用程序。而不是与命令行选项斗争,为什么不{/ 3}}使编译项目太容易了?只是一个建议:)