无法从QT调用Matlab engOpen

时间:2016-08-24 22:02:52

标签: matlab qt engopen

我正在尝试将matlab引擎纳入QT创建者。我确信我已经在.pro文件中正确设置了INCLUDEPATH和LIBS,因为没有语法或链接问题。我添加了

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)。 我在Windows 7上使用32位的Matlab R2015a,QT 5.5.0。我总是以管理员身份运行Matlab和QT。我也尝试在cmd中运行matlab -regserver,并弹出一个简化的Matlab命令行窗口。但QT计划仍然崩溃。每当我对代码或环境进行更改时,我都会仔细清理并重建程序,以避免潜在的构建问题。

如果有人让我对这个问题有所了解,我将非常感激。

1 个答案:

答案 0 :(得分:0)

问题解决了。有两件事要做:

  1. 确保您的Qt和Matlab都是32位或64位。
  2. 在Qt中使用mingw编译器而不是msvc。
  3. 然后它会起作用。