C++调用MATLAB打包动态dll文件方法

一、 配置matlab编译器
1、 在matlab中的命令行窗口中输入mex -setup,会出现如下界面,
C++调用MATLAB打包动态dll文件方法_第1张图片
点击mex -setup C++,maltab会自动检索电脑中安装的VS,我只安装了VS2019,因此可直接完成该配置。若安装有两款VS,则需要进行选择。
C++调用MATLAB打包动态dll文件方法_第2张图片
在这里插入图片描述
2. 在matlab中的命令行窗口中输入mbuild -setup,会出现如下界面,选择mex -setup C++ -client MBUILD
C++调用MATLAB打包动态dll文件方法_第3张图片
matlab编译器配置完成。

二、 创建.m函数,生成C++文件

  1. 创建脚本文件,命名为algorithm.m
    C++调用MATLAB打包动态dll文件方法_第4张图片
  2. 编译生成C++文件
    将matlab的当前目录打开至algorithm.m的文件夹下,在命令行窗口里输入如下指令:
    mcc -W cpplib:algorithm -T link:lib algorithm.m -C
    等待生成C++所需文件,包括.lib、.dll、.h、.cpp、.ctf文件
    C++调用MATLAB打包动态dll文件方法_第5张图片
    C++调用MATLAB打包动态dll文件方法_第6张图片

三、创建C++项目并配置环境
注意:matlab如果是64位,则project项目配置也必须为64位,否则无法完成编译。即C++项目也必须是64位。

  1. 创建空项目,并命名为project,

  2. 配置第三方库目录

C/C++>>常规>>附加包含目录:

添加:
D:\Program Files %28x86%29\MATLAB\extern\include
D:\SystemDefault\桌面\Project1\Project1

链接器>>常规>>附加库目录:

添加:
D:\Matlab2020b\extern\lib\win64\microsoft
D:\SystemDefault\桌面\Project1\Project1

链接器>>输入>>附加依赖项,
algorithm.lib
mclmcrrt.lib
mclmcr.lib
libmat.lib
libmex.lib

  1. 将.lib、 .h、 .dll、 .ctf四个文件,放到创建的C++工程project/project目录中以及project/project/x64/Debug目录中。

D:\SystemDefault\桌面\Project1\Project1
D:\SystemDefault\桌面\Project1\Project1\x64\Debug

  1. 配置系统变量
    "我的电脑"右键>>属性>>高级系统设置>>高级>>环境变量>>系统变量,Path设置为Matlab路径。配置系统变量后需重启计算机,使其生效。

Path:D:\Program Files (x86)\MATLAB\bin\win64

5.调试>>窗口>>异常设置>>Win32 Exceptions全部不勾选

四、 编辑C++代码

#include 
#include "algorithm.h"

int main()
{
	bool isOk = 0;
	if (!algorithmInitialize())
	{
		std::cout << "Could not initialize the algorithm.\n";
		return -1;
	}
	mwArray x(1, 1, mxDOUBLE_CLASS);
	mwArray y(1, 1, mxDOUBLE_CLASS);
	x(1, 1) = 20;
	y(1, 1) = 30;
	mwArray a(1, 1, mxDOUBLE_CLASS);
	mwArray b(1, 1, mxDOUBLE_CLASS);
	algorithm(2, a, b, x, y);/*algorithm为matlab中定义的函数名,2是返回值的个数,a、b存储了返回值,x、y是m函数传入的参数*/
	system("pause");
	return 0;
}

五、可能出现内存异常的错误
后续更新…

你可能感兴趣的:(C++基础学习,matlab,c++,开发语言)