如何解决与Qt的链接错误?

如何解决与Qt的链接错误?

问题描述:

我是Qt新手,尝试使用微软的“CL.exe”编译和链接一个简单的“Hello,World”程序。有关如何做到这一点的任何建议?如何解决与Qt的链接错误?

的程序是:

#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 
[email protected]@[email protected]) referenced in function _main 
Hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) pub 
lic: virtual __thiscall QLabel::~QLabel(void)" ([email protected]@[email protected]) referen 
ced in function _main 
Hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) pub 
lic: static int __cdecl QApplication::exec(void)" ([email protected]@@SAH 
XZ) referenced in function _main 
Hello.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) pub 
lic: void __thiscall QWidget::show(void)" ([email protected]@@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 

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


在发布.pro文件后编辑添加:您的.pro文件看起来不错。您不会覆盖QT变量,默认情况下包含core gui,这应导致QtCode和QtGui被链接到该变量。 QtCore和QtGui都包含在你的包含路径中这一点也很明显。

我还没有使用Q.exe与Qt,但你可以尝试添加LIBS += -lQtCore -lQtGui强制链接到QtCore和QtGui。 (虽然可能有更优雅的修复方法。)

+0

Hello.pro现在包含在问题中。 – JaysonFix 2010-12-14 13:50:11

+0

答案:使用Microsoft的编译器使用Visual Studio项目C:\ Qt \ 2010.05 \ qt \ src \ corelib \ QtCore.vcproj和C:\ Qt \ 2010.05 \ qt \ src \ gui \ QtGui.vcproj编译库。然后,在Visual Studio中创建Hello项目,然后在Project ... Properties下的“C/C++ ... Additional Include Directories”下添加目录,在“Linker ... General”下添加“... qt \ lib”目录...其他库目录“,在”链接器...输入...附加依赖项“下添加”QtCored4.lib和QtGuid4.lib“。然后,建立项目。 {希望我记得一切!} – JaysonFix 2010-12-14 19:43:39

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

试图编译和链接简单 “你好,世界”采用 微软的“CL.EXE”

嘿,我认为有越来越视觉工作室编译的Qt应用程序的更简单的方法程序。而不是在命令行选项挣扎,为什么不install the qt visual studio addin,使编译项目soooooooo容易?只是一个建议:)