一、 配置matlab编译器
1、 在matlab中的命令行窗口中输入mex -setup,会出现如下界面,
点击mex -setup C++,maltab会自动检索电脑中安装的VS,我只安装了VS2019,因此可直接完成该配置。若安装有两款VS,则需要进行选择。
2. 在matlab中的命令行窗口中输入mbuild -setup,会出现如下界面,选择mex -setup C++ -client MBUILD
matlab编译器配置完成。
二、 创建.m函数,生成C++文件
- 创建脚本文件,命名为algorithm.m
- 编译生成C++文件
将matlab的当前目录打开至algorithm.m的文件夹下,在命令行窗口里输入如下指令:
mcc -W cpplib:algorithm -T link:lib algorithm.m -C
等待生成C++所需文件,包括.lib、.dll、.h、.cpp、.ctf文件
三、创建C++项目并配置环境
注意:matlab如果是64位,则project项目配置也必须为64位,否则无法完成编译。即C++项目也必须是64位。
-
创建空项目,并命名为project,
-
配置第三方库目录
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
- 将.lib、 .h、 .dll、 .ctf四个文件,放到创建的C++工程project/project目录中以及project/project/x64/Debug目录中。
D:\SystemDefault\桌面\Project1\Project1
D:\SystemDefault\桌面\Project1\Project1\x64\Debug
- 配置系统变量
"我的电脑"右键>>属性>>高级系统设置>>高级>>环境变量>>系统变量,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;
}
五、可能出现内存异常的错误
后续更新…