VS2017+Qt5.12+Matlab2018混合编程

一、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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值