プロジェクトを Qt4 から Qt5 に移行しています。プロジェクト自体の移行が完了し、現在はライブラリに取り組んでいます。これまでのところ、変換してプロジェクトにリンクする際に多くの問題はありませんでしたが、これは未定義の参照をスローしています。
プロジェクトは QtSerialPort を使用し、Qt4 バージョンを使用して完全にコンパイルされ、.pro ファイルで次のようにリンクされました。
-l:"C:/Users/Sprint/Desktop/swe/marssies/libQtSerialPort.a" \
Qt5 を使用して、または 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 を持つ関数だけでなく、他の多くの関数を認識できないためです。
どうもありがとうございました。スタックオーバーフローなしで何をするかわかりません。
編集わかりました、SerialPortInfo 宣言された変数を QSerialPortInfo に変更するように指示するこれを見つけました。プロジェクトでそれを実行しましたが、新しいエラーが発生していますが、どの #include を入れるべきかわかりません:
#include <QtSerialPort>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QtSerialPort/QtSerialPort>
これらのそれぞれを試してみましたが、すべてエラーが発生します。試してみて、何かが明らかになるかどうかを確認してください