Как разрешить ошибку связи с Qt? - PullRequest
0 голосов
/ 14 декабря 2010

Я новичок в Qt и пытаюсь скомпилировать и связать простую программу "Hello, World", используя Microsoft "CL.exe" Любой совет, как это сделать?

Программа:

#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 голосов
/ 15 декабря 2010

Ваш PATH должен включать каталог qt / bin. В командной строке Visual Studio вы должны сделать «qmake hello.pro», который создает три make-файла, а затем «nmake». Если вы хотите использовать файлы vcxproj, вы должны изменить свой ШАБЛОН на vcapp .

0 голосов
/ 15 декабря 2010

пытается скомпилировать и связать простую программу "Hello, World" с помощью Microsoft "CL.exe"

Эй, я думаю, есть более простые способы компилирования приложений qt в visual studio,Вместо того, чтобы бороться с параметрами командной строки, почему бы не установить надстройку qt visual studio , которая упрощает компиляцию проектов?Просто предложение:)

0 голосов
/ 14 декабря 2010

Вы должны ссылаться на библиотеки QtCore и QtGui, но это не так.Как выглядит ваш .pro-файл?


Отредактировано для добавления после публикации .pro-файла: Ваш .pro-файл выглядит хорошо.Вы не перезаписываете переменную QT, которая по умолчанию включает core gui, что должно привести к связыванию QtCode и QtGui.Это также очевидно по тому факту, что QtCore и QtGui присутствуют в ваших путях включения.

Я не использовал cl.exe с Qt, но вы можете попробовать добавить LIBS += -lQtCore -lQtGui для принудительной ссылки на QtCore и QtGui.(Возможно, есть более элегантное исправление.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...