如何解决与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。 (虽然可能有更优雅的修复方法。)
答
您的PATH应该包含qt/bin目录。在Visual Studio命令提示符中,您应该执行“qmake hello.pro”,它将创建三个makefile,然后创建“nmake”。如果你想使用vcxproj文件,你应该将你的TEMPLATE改为vcapp。
答
试图编译和链接简单 “你好,世界”采用 微软的“CL.EXE”
嘿,我认为有越来越视觉工作室编译的Qt应用程序的更简单的方法程序。而不是在命令行选项挣扎,为什么不install the qt visual studio addin,使编译项目soooooooo容易?只是一个建议:)
Hello.pro现在包含在问题中。 – JaysonFix 2010-12-14 13:50:11
答案:使用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