Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Dizarker от Август 12, 2014, 11:00



Название: Вопрос по подключению QSerialPort
Отправлено: Dizarker от Август 12, 2014, 11:00
Здравствуйте.

Вопросик в следующем - надо написать некую GUI, которая будет отображать данные, пришедшие по com порту.

Поставил себе Qt Creator c Qt 5.3.1

В файле проекта дописываю:

QT += serialport

В исходнике файла виджета добавляю #include <QtSerialPort/QSerialPort>

Сборка проходит нормально, т.е. и библиотеку serialport и инклуд креатор видит.

Сборка также проходит и при добавлении глобального указателя:
QSerialPort *sPort;

Но стоит добавить в обработчик нажатия кнопки хоть что-нибудь, связанное с сериал портом - сразу куча ошибок линковщика о ссылке на недопустимый символ..

void Widget::on_pushButton_clicked()
{
    sPort = new QSerialPort (this);
}

Подскажите, что не так?


Название: Re: Вопрос по подключению QSerialPort
Отправлено: Пантер от Август 12, 2014, 11:05
Лог сборки сюда приложи.


Название: Re: Вопрос по подключению QSerialPort
Отправлено: Dizarker от Август 12, 2014, 11:14
Код:
11:58:24: Выполняются этапы для проекта futabaSim...
11:58:24: Настройки не изменились, этап qmake пропускается.
11:58:24: Запускается: «D:\Qt\Tools\QtCreator\bin\jom.exe»
D:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
cl -c -nologo -Zm200 -Zc:wchar_t -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\futabaSim.pdb -DUNICODE -DWIN32 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I"..\..\..\..\Qt\5.3\msvc2010_opengl\include" -I"..\..\..\..\Qt\5.3\msvc2010_opengl\include\QtWidgets" -I"..\..\..\..\Qt\5.3\msvc2010_opengl\include\QtGui" -I"..\..\..\..\Qt\5.3\msvc2010_opengl\include\QtCore" -I"debug" -I"." -I"." -I"..\..\..\..\Qt\5.3\msvc2010_opengl\mkspecs\win32-msvc2010" -Fodebug\ @C:\Users\dizarker\AppData\Local\Temp\widget.obj.4960.0.jom
widget.cpp
echo 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ "debug\\futabaSim.exe.embed.manifest">debug\futabaSim.exe_manifest.rc
if not exist debug\futabaSim.exe if exist debug\futabaSim.exe.embed.manifest del debug\futabaSim.exe.embed.manifest
if exist debug\futabaSim.exe.embed.manifest copy /Y debug\futabaSim.exe.embed.manifest debug\futabaSim.exe_manifest.bak
‘Є®ЇЁа®ў ­® д ©«®ў:         1.
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:debug\futabaSim.exe.embed.manifest /OUT:debug\futabaSim.exe @C:\Users\dizarker\AppData\Local\Temp\futabaSim.exe.4960.1014.jom
widget.obj : error LNK2001: неразрешенный внешний символ ""__declspec(dllimport) public: __thiscall QSerialPort::QSerialPort(class QObject *)" (__imp_??0QSerialPort@@QAE@PAVQObject@@@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual struct QMetaObject const * __thiscall QSerialPort::metaObject(void)const " (?metaObject@QSerialPort@@UBEPBUQMetaObject@@XZ)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void * __thiscall QSerialPort::qt_metacast(char const *)" (?qt_metacast@QSerialPort@@UAEPAXPBD@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual int __thiscall QSerialPort::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@QSerialPort@@UAEHW4Call@QMetaObject@@HPAPAX@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual bool __thiscall QSerialPort::isSequential(void)const " (?isSequential@QSerialPort@@UBE_NXZ)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual bool __thiscall QSerialPort::open(class QFlags<enum QIODevice::OpenModeFlag>)" (?open@QSerialPort@@UAE_NV?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual void __thiscall QSerialPort::close(void)" (?close@QSerialPort@@UAEXXZ)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual bool __thiscall QSerialPort::atEnd(void)const " (?atEnd@QSerialPort@@UBE_NXZ)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __int64 __thiscall QSerialPort::bytesAvailable(void)const " (?bytesAvailable@QSerialPort@@UBE_JXZ)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual __int64 __thiscall QSerialPort::bytesToWrite(void)const " (?bytesToWrite@QSerialPort@@UBE_JXZ)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual bool __thiscall QSerialPort::canReadLine(void)const " (?canReadLine@QSerialPort@@UBE_NXZ)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual bool __thiscall QSerialPort::waitForReadyRead(int)" (?waitForReadyRead@QSerialPort@@UAE_NH@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""public: virtual bool __thiscall QSerialPort::waitForBytesWritten(int)" (?waitForBytesWritten@QSerialPort@@UAE_NH@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual __int64 __thiscall QSerialPort::readData(char *,__int64)" (?readData@QSerialPort@@MAE_JPAD_J@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual __int64 __thiscall QSerialPort::readLineData(char *,__int64)" (?readLineData@QSerialPort@@MAE_JPAD_J@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""protected: virtual __int64 __thiscall QSerialPort::writeData(char const *,__int64)" (?writeData@QSerialPort@@MAE_JPBD_J@Z)"
widget.obj : error LNK2001: неразрешенный внешний символ ""__declspec(dllimport) public: virtual __thiscall QSerialPort::~QSerialPort(void)" (__imp_??1QSerialPort@@UAE@XZ)"
debug\futabaSim.exe : fatal error LNK1120: 17 неразрешенных внешних элементов
jom: D:\Projects\Qt\futabaSim\build-futabaSim-Desktop_Qt_5_3_MSVC2010_OpenGL_32bit-Debug\Makefile.Debug [debug\futabaSim.exe] Error 1120
jom: D:\Projects\Qt\futabaSim\build-futabaSim-Desktop_Qt_5_3_MSVC2010_OpenGL_32bit-Debug\Makefile [debug] Error 2
11:58:25: Процесс «D:\Qt\Tools\QtCreator\bin\jom.exe» завершился с кодом 2.
Ошибка при сборке/установке проекта futabaSim (комплект: Desktop Qt 5.3 MSVC2010 OpenGL 32bit)
Во время выполнения этапа «Сборка»
11:58:25: Прошло времени: 00:01.


Название: Re: Вопрос по подключению QSerialPort
Отправлено: Пантер от Август 12, 2014, 11:14
А у тебя он не MinGW случаем собран?


Название: Re: Вопрос по подключению QSerialPort
Отправлено: Dizarker от Август 12, 2014, 11:20
Собирал либу прямо в QtCreator..
А у него да, компилятор mingw


Название: Re: Вопрос по подключению QSerialPort
Отправлено: Пантер от Август 12, 2014, 12:00
На сколько я вижу, проект собираешь студийным компилятором, вот и проблема. Либо оба Мингвом, либо оба студией.