QtAddon SerialPort с Qt4 на Qt5

Я переношу проект с Qt4 на Qt5. Я закончил миграцию самого проекта и сейчас работаю над библиотеками. До сих пор у меня не было проблем с преобразованием и связыванием их с проектом, но этот выдает неопределенные ссылки.

В проекте используется QtSerialPort, и он отлично скомпилирован с использованием его версии Qt4, и он был связан следующим образом в файле .pro:

-l:"C:/Users/Sprint/Desktop/swe/marssies/libQtSerialPort.a" \

Я скомпилировал библиотеку последовательного порта с/для Qt5 и связал ее следующим образом:

-l:"C:/Users/Sprint/Desktop/swe/marssies/libQt5SerialPort.a" \

Но я продолжаю получать эти ошибки:

./release\gpssettingswidget.o:gpssettingswidget.cpp:(.text+0x4ecc): undefined reference to `QtAddOn::SerialPort::SerialPortInfo::availablePorts()'
Makefile.Release:922: recipe for target '..\Release\Swibz.exe' failed
./release\gpssettingswidget.o:gpssettingswidget.cpp:(.text+0x4f3e): undefined reference to `QtAddOn::SerialPort::SerialPortInfo::portName() const'
./release\gpssettingswidget.o:gpssettingswidget.cpp:(.text+0x4f5d): undefined reference to `QtAddOn::SerialPort::SerialPortInfo::description() const'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: ./release\gpssettingswidget.o: bad reloc address 0xd in section `.text$_ZN25Ui_GPSSettingsWidgetClass13retranslateUiEP14SettingsWidget[__ZN25Ui_GPSSettingsWidgetClass13retranslateUiEP14SettingsWidget]'
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: *** [..\Release\Swibz.exe] Error 1

Я знаю, что это ошибка компоновщика из-за того, что «ld вернул 1 статус выхода». Я пытался связать libQt5SerialPortd.a, libQt5SerialPort.dll и libQt5SerialPortd.dll, но выдает те же ошибки
(Кстати, если кто-то знает разница между libNAMEd.a и libNAME.a, пожалуйста, поделитесь своими знаниями)

Может быть, QtAddOn теперь находится в другой библиотеке? Потому что иначе он не должен распознавать многие другие функции, не только с QtAddOn.
Большое спасибо. Я не знаю, что бы я делал без stackoverflow.

РЕДАКТИРОВАТЬ Хорошо, я нашел это, которое говорит об изменении любого SerialPortInfo объявил переменную в QSerialPortInfo, я сделал это в своем проекте, и я получаю новые ошибки, но теперь я не уверен, какой #include я должен поставить:

#include <QtSerialPort>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QtSerialPort/QtSerialPort>

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


person Victor    schedule 07.05.2014    source источник
comment
Вы пытались проверить, остались ли имена функций прежними? Поскольку это то, что говорит компоновщик, он не может найти эти ссылки, вероятно, они действительно изменились.   -  person clambake    schedule 07.05.2014
comment
+1 за вопрос и использование библиотеки. ;)   -  person lpapp    schedule 07.05.2014


Ответы (1)


QtSerialPort теперь является частью Qt. Он официально стал частью Qt с выпуском 5.1.0. Если вы используете новую версию Qt, нет необходимости отдельно получать исходный код и ссылаться на него.

Чтобы использовать модуль с Qt 5, добавьте эту строку в файл проекта qmake:

QT += serialport

Затем вы можете включить файлы заголовков. Чтобы использовать эти классы в своем приложении, используйте следующий оператор include:

#include <QtSerialPort/QtSerialPort>

Существует неплохая документация по классам. Вы можете просмотреть его из Qt Assistant.

person Nejat    schedule 07.05.2014