VS与MATLAB混合编程

VS与MATLAB混合编程

与之前写的QT与MATLAB混合编程差不多,就写一下不同的地方
QT与MATLAB混合编程

首先,打开MATLAB生成的打包文件下的for_redistribution_files_only文件夹,将生成的dll、h、lib文件复制到VS工程下
在这里插入图片描述

VS调用

1.新建工程后进行配置

选择生成——>配置管理器,在活动解决方案选择×64,设置好关闭即可

在这里插入图片描述

在配置属性——>VC++目录
在包含目录中添加:
你的matlab安装目录\extern\include
在库目录中添加:
你的matlab安装目录\extern\lib\win64\microsoft
在这里插入图片描述

在设置属性页中——>链接器——>输入——>附加依赖项 在其中添加一下内容

libeng.lib
libmat.lib
libmex.lib
libmx.lib
mclmcrrt.lib
mclmcr.lib
Matlab_Digraph.lib //这个是你MATLAB所写函数生成的.lib名字

在这里插入图片描述

四、编译和运行

附上VS中代码(部分)

void DiGraph::DrawDigraph_CP()
{
	select[0] = 1;
	VectorToArr();
	DrawLines();
	TransFormat();
	c.ImportData_Digraph(in_degree, in_out_weight, MAXVEX, MAXEDGE);
	criticalPathArcSize = c.TransferResults_CP(&iCriticalPathS, &iCriticalPathT);
	if (!Matlab_DigraphInitialize())           // 初始化,必须要使用
	{
		qDebug() << "add init failed.";
		return;
	}
	mwArray in_fullLineS(1, MAXEDGE, mxDOUBLE_CLASS, mxREAL);
	mwArray in_fullLineT(1, MAXEDGE, mxDOUBLE_CLASS, mxREAL);
	mwArray in_jobId(1, taskNum[0], mxDOUBLE_CLASS, mxREAL);
	mwArray in_oper(1, taskNum[0], mxDOUBLE_CLASS, mxREAL);
	mwArray in_v(1, taskNum[0], mxDOUBLE_CLASS, mxREAL);
	mwArray in_dottedLineS(1, MAXEDGE - workPieceNum - taskNum[0], mxDOUBLE_CLASS, mxREAL);
	mwArray in_dottedLineT(1, MAXEDGE - workPieceNum - taskNum[0], mxDOUBLE_CLASS, mxREAL);
	mwArray in_taskNum(1, 1, mxDOUBLE_CLASS, mxREAL);
	mwArray in_iCriticalPathS(1, criticalPathArcSize, mxDOUBLE_CLASS, mxREAL);
	mwArray in_iCriticalPathT(1, criticalPathArcSize, mxDOUBLE_CLASS, mxREAL);
	mwArray in_select(1, 1, mxDOUBLE_CLASS, mxREAL);

	in_fullLineS.SetData(fullLineS, MAXEDGE);
	in_fullLineT.SetData(fullLineT, MAXEDGE);
	in_jobId.SetData(jobId, taskNum[0]);
	in_oper.SetData(oper, taskNum[0]);
	in_v.SetData(macDurationTime, taskNum[0]);
	in_dottedLineS.SetData(dottedLineS, MAXEDGE - workPieceNum - taskNum[0]);
	in_dottedLineT.SetData(dottedLineT, MAXEDGE - workPieceNum - taskNum[0]);
	in_taskNum.SetData(taskNum, 1);
	in_iCriticalPathS.SetData(iCriticalPathS, criticalPathArcSize);
	in_iCriticalPathT.SetData(iCriticalPathT, criticalPathArcSize);
	in_select.SetData(select, 1);

	Matlab_Digraph(in_fullLineS, in_fullLineT, in_v, in_dottedLineS, in_dottedLineT, in_taskNum, in_jobId, in_oper, in_iCriticalPathS, in_iCriticalPathT, in_select);
}

最终运行结果:
在这里插入图片描述

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值