VS通过动态链接库调用MATLAB函数

VS通过动态链接库调用MATLAB函数


实际上,有两种调用方式,一种是通过在vs中通过engine来调用MATLAB函数,但是这种情况要通过cmd先打开MATLAB,使得MATLAB可以被vs所指挥。另一种就是这里将要介绍的方法,该方法在调用函数时,无需事先打开MATLAB。

将MATLAB函数编译为库

这是第一步,首先将需要使用的MATLAB 函数编译为链接库等文件。

  1. 在MATLAB命令行输入 mex -setup ,如图所示;

在这里插入图片描述
2.选择 C++那一个,如图所示;
在这里插入图片描述
3.在MATLAB命令行输入 mbuild -setup ,如图所示;
在这里插入图片描述
4. 还是选择 C++那一个,如图所示;
在这里插入图片描述
5. 在MATLAB命令行输入 mcc -W cpplib:Dataprocess -T link:lib Dataprocess.m (这里的Dataprocess就是自己需要编译成库的MATLAB函数的名称,以及转换成的库的名称),如图所示;
在这里插入图片描述
6. 回车之后,不会立马出现结果(此时在转换过程中),静候!一会就会出现如下结果;
在这里插入图片描述
7. 此时,即可查看MATLAB函数文件路径下已经出现了一堆文件,如图所示;
在这里插入图片描述

在VS中调用库

1.打开VS,新建空项目
2.配置项目环境,项目->属性->配置管理器,改成×64,如图所示;
在这里插入图片描述
3.VC++ 目录->包含目录,加入D:\MATLAB\matlab\extern\include路径
4.VC++ 目录->库目录,加入D:\MATLAB\matlab\extern\lib\win64\microsoft
5.链接器->输入->附加依赖项,添加libeng.lib;libmat.lib;libmex.lib;libmx.lib;mclmcrrt.lib;mclmcr.lib;Dataprocess.lib,(其中最后一个是刚刚MATLAB编译生成的其中一个)如图所示;
在这里插入图片描述
6.将MATLBA生成的.h和.lib和.dll三个文件复制到该项目的文件路径下,如图所示;
在这里插入图片描述
7.添加新建main.cpp文件,如图所示;

#include <string>
#include "Dataprocess.h"
using namespace std;

int main()
{
	if (!DataprocessInitialize());
	int updown = 1;
	char InputFile[] = "D:\data\PCDFile\LooseCoil-SVG5-SOR5-Up.txt";
	char OutPutFile[] = "D:\data\Features\OverflowEdgeCoil_Feature.txt";

	mwArray mwA_updown(1, 1, mxINT32_CLASS);

	mwA_updown.SetData(&updown, 1);

	mwArray mwA_InputFile(InputFile);
	mwArray mwA_OutputFile(OutPutFile);

	Dataprocess(mwA_InputFile, mwA_OutputFile, mwA_updown);

	return 0;
}

8.运行程序,即可完成函数的调用(注意mwArray的使用方法);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值