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

本文详细介绍了如何配置MATLAB编译器,创建.m函数并生成C++文件,接着在Visual Studio中创建C++项目,配置环境变量,并实现与MATLAB函数的调用。过程中涉及了附加库目录、附加依赖项的设置,以及调试环境的调整。最后,给出了可能出现的内存异常问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

  1. 创建脚本文件,命名为algorithm.m
    在这里插入图片描述
  2. 编译生成C++文件
    将matlab的当前目录打开至algorithm.m的文件夹下,在命令行窗口里输入如下指令:
    mcc -W cpplib:algorithm -T link:lib algorithm.m -C
    等待生成C++所需文件,包括.lib、.dll、.h、.cpp、.ctf文件
    当前目录
    生成lib、dll等文件

三、创建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 <iostream>
#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;
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值