Russian Qt Forum
Ноябрь 26, 2024, 02:17 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по подключению QSerialPort  (Прочитано 3843 раз)
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);
}

Подскажите, что не так?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Август 12, 2014, 11:05 »

Лог сборки сюда приложи.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Dizarker
Гость
« Ответ #2 : Август 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.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Август 12, 2014, 11:14 »

А у тебя он не MinGW случаем собран?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Dizarker
Гость
« Ответ #4 : Август 12, 2014, 11:20 »

Собирал либу прямо в QtCreator..
А у него да, компилятор mingw
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Август 12, 2014, 12:00 »

На сколько я вижу, проект собираешь студийным компилятором, вот и проблема. Либо оба Мингвом, либо оба студией.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 22.