Вызов функции matlab из Qt с помощью QProcess

Мне нужно вызвать функцию Matlab из Qt. Я знаю, что есть стандартный способ сделать это через Engine, но мне не удалось подключить .lib библиотеки (я думаю, потому что использую компилятор Mingw). Итак, насколько я понимаю, QProcess - единственный способ сделать это. Я изучил примеры и написал простую программу, в которой есть один QLineEdit (для сценария Matlab) и два QPushButton (для отправки сценария в Matlab и чтения ответа). Вот код:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
   {
        ui->setupUi(this);
        proc = new QProcess(this);
        proc->start("\"C:\\Program Files\\MATLAB\\R2013b\\bin\\matlab.exe\"");

    }

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

  void MainWindow::on_readButton_clicked()
  {
       QByteArray dataError = proc->readAllStandardError();
       qDebug()<<dataError;
       QByteArray dataOutput = proc->readAllStandardOutput();
       qDebug()<<dataOutput;
  }

       void MainWindow::on_writeButton_clicked()
  {
       QString text = ui->textForMatlab->text();
       QByteArray script;
       script.append(text);
       qDebug()<<script;
       proc->write(script);
   }

Когда я запускаю эту программу, запускается matlab.exe. Но когда я набираю что-то в QLineEdit и нажимаю кнопку записи, Matlab не отвечает. Не могли бы вы сказать мне, что я делаю не так?


person lnk    schedule 03.11.2014    source источник


Ответы (1)


попробуй это

  QString program = "C:/Program Files/MATLAB/R2013b/bin/matlab";
    QStringList arguments;
    arguments << "yourarg" << "youragr2";// if u have any aruguments then pass here

    QProcess *myProcess = new QProcess(this);
    myProcess->start(program, arguments);

если не работает, попробуйте myProcess->startDetached(program,argumets);

person Arunprasanth K V    schedule 18.11.2014