1

私はいくつかの質問を見て、たくさんグーグルで検索しましたが、arduino との間で読み書きするために、qextserialport を使用してシリアル ポート オブジェクトを宣言する方法が見つかりません。Qextserialport を使用してシリアル ポートに書き込む方法でユーザーが行ったことを試しましたが、コンパイラは次のエラーを表示します。

undefined reference to `QextSerialPort::QextSerialPort(QString const&, QextSerialPort::QueryMode, QObject*)'

私が使用しているコードは次のとおりです。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QtExtSerialPort/qextserialport.h>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_BTN_Connect_clicked()
{

    int index=ui->Selector_Port->currentIndex();
    QextSerialPort *port = new QextSerialPort("/dev/ttyACM0");
}

このエラーが表示されるのはなぜですか? Debian 8.2 と QT 4.8.6 を使用しています

編集: 行を追加した後:

CONFIG += qesp_linux_udev
QT += extserialport

プロジェクト ファイルに次のエラーが表示されます。

"Project MESSAGE: Warning: unknown QT: extserialport"
4

1 に答える 1

5

エラーメッセージはリンカーによって生成されます。QextSerialPortこれは、ライブラリ バイナリが見つからないことを意味します。

Qt4 のQextSerialPort マニュアル によると、 CompatモードQextSerailPortでのみ使用できます。

静的ライブラリまたは共有ライブラリとして使用するか、単にコンポーネントをアプリケーションに統合できます。

QextSerailPort最も簡単な解決策は、メイン プロジェクトと一緒にビルドすることです。.proプロジェクト ファイル ( )に含めるだけです。

include(pathToQesp/compat/qextserialport.pri)

Compat モードでは Qt モジュールとして使用されないためQT += extserialport、必要ありません。


最も簡単なハウツー

  • 新しいフォルダーを作成します。それに行きます:mkdir test && cd test
  • git clone https://github.com/qextserialport/qextserialport
  • このフォルダーに新しい Qt プロジェクトを、たとえば nameextserialtestで作成すると、次の 2 つのフォルダーが作成されます。
    • qextserialportQextSerailPortパッケージ付き
    • extserialtestあなたのQtプロジェクトで
  • include (../qextserialport/src/qextserialport.pri)行を追加しますextserialtest.pro
  • #include <qextserialport.h>プロジェクト コードを記述します。new QextSerialPort("/dev/ttyACM0");

Linux の Qt 4.8.3 で、そのままで動作することを確認しました。

于 2015-09-27T23:36:55.880 に答える