一、m文件编译
二、Qt vs项目中使用Add.dll文件
在matlab中编写一个简单的程序
function [C]=Add(A,B)
C=A+B;
end
在Matlab中使用mbuild -setup设置使用C++编译器
命令行中输入deploytool
显示对话框
在本机上测试,进行如下选项
生成如下文件
二、Qt vs项目中使用Add.dll文件
2.1 在vs中创建Qt项目,并将Ui界面设计如下:
2.2 添加Add.lib文件
在项目目录下面创建名为“include”文件夹将生成的Add.h和Add.lib文件复制进此文件夹、
添加VS项目包含文件(matlab路径下的include文件夹,以及matlab路径下的include\Win64)
右键项目-》属性-》VC++目录-》包含目录
右键项目-》属性-》VC++目录-》库目录
右键项目-》属性-》连接器-》输入-》附加依赖项
libmex.lib
libmx.lib
libmat.lib
libeng.lib
mclmcr.lib
mclmcrrt.lib
Add.lib(Matlab的.lib文件)
Add.cpp代码如下:
#include "Add.h"
#include"mdd.h"
#include"qdebug.h"
Add::Add(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
connect(ui.pushButton, &QPushButton::clicked, [=]()
{
this->on_btnAdd_clicked();
});
}
void Add::on_btnAdd_clicked()
{
if (!mddInitialize())
{
qDebug() << "add init failed.";
}
double A= ui.lineEdit->text().toDouble();
double B = ui.lineEdit_2->text().toDouble();
mwArray a(1, 1, mxDOUBLE_CLASS,mxREAL);
mwArray b(1, 1, mxDOUBLE_CLASS, mxREAL);
mwArray c(1, 1, mxDOUBLE_CLASS, mxREAL);
a(1, 1) = A;
b(1, 1) = B;
int nargout = 1;
mdd(nargout,c,a,b);
QString C = c.ToString();
ui.lineEdit_3->setText(C);
}
Add::~Add()
{}
注意:如果运行时,报错(帧不在模块中)
点击“异常设置”-》取消勾选Win32 Exception