QtAddon SerialPort из Qt4 в Qt5

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

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

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

Я скомпилировал библиотеку Serial Port с / для 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 return 1 exit status". Я пытался связать libQt5SerialPortd.a, libQt5SerialPort.dll и libQt5SerialPortd.dll, но выдает те же ошибки.
(Кстати, если кто-то знает разницу между libNAMEd.a и libNAME.a, пожалуйста, поделитесь своими знаниями)

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

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

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

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

1 ответ

Решение

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

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

QT += serialport

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

#include <QtSerialPort/QtSerialPort>

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

Другие вопросы по тегам