Не в состоянии вызвать Matlab engOpen из QT
Я пытаюсь задействовать движок Matlab в QT Creator. Я уверен, что я правильно установил INCLUDEPATH и LIBS в файле.pro, так как нет проблем с грамматикой или ссылками. я добавил
D:\Program Files\Matlab32\bin;
D:\Program Files\Matlab32\runtime\win32;
D:\Program Files\Matlab32\bin\win32
на мой путь. В mainwindow.cpp я написал
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "engine.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
qDebug() << "Trying to open the engine";
Engine *ep;
ep = engOpen(NULL);
engClose(ep);
}
MainWindow::~MainWindow()
{
delete ui;
}
Каждый раз, когда я пытаюсь запустить код в режиме отладки или выпуска, QT говорит
Запуск D:\qt projects\build-VisVehicle-Qt_5_5_0-Release\release\VisVehicle.exe... Программа неожиданно завершила работу. Сбой D: \ qt projects \ build-VisVehicle-Qt_5_5_0-Release \ release \ VisVehicle.exe.
Закомментировав коды, я обнаружил, что ep = engOpen(NULL) вызвал сбой. Я использую Matlab R2015a, QT 5.5.0, оба 32-разрядные в Windows 7. Я всегда запускаю Matlab и QT от имени администратора. Я также попытался запустить matlab -regserver в cmd, и появилось упрощенное окно командной строки Matlab. Но программа QT все еще падает. И всякий раз, когда я вносил изменения в код или среду, я тщательно очищал и перестраивал программу, чтобы избежать потенциальных проблем со сборкой.
Буду очень признателен, если кто-нибудь даст мне представление об этой проблеме.
1 ответ
Задача решена. Есть две ключевые вещи, которые нужно сделать:
- Убедитесь, что ваши Qt и Matlab 32-битные или оба 64-битные.
- Используйте компилятор mingw вместо msvc в Qt.
Тогда это будет работать.