matlab拥有强大的数学计算能力,而C++拥有强大的编程能力,所以使用C++程序调用matlab可以很好的解决C++编程中遇到的数学计算问题。
方法/步骤
-
1
C++可以以多种方式调用matlab。
1、通过调用动态链接库。
2、通过matlab引擎。
3、通过COM组件。
4、通过.NET配件。
这里只介绍C++调用matlab的M文件生成的dll的形式,其他方式可以参考《精通MATLAB与C/C++混合编程》这本书 。
-
2
配置MATLAB
首先编写一个简单的matlab函数。
选择左上角的New->function
编写代码。
然后点击左上角Save,然后会生成一个add.m的文件。
-
3
在Command Window窗口配置Matlab。
输入 mex -setup(mex后边有空格)。
选择mex -setup C++
-
4
接着输入mbuild -setup命令(mbuild后边有空格)
选择mex -setup C++ -client MBUILD
-
5
在命令行窗口输入命令mcc -W cpplib:add -T link:lib add 前面的 add 是编译产生的文件名,后一个 add 指要编译的.
-W是命令,有多种可选。具体的相关命令和含义可以 doc mcc查看
add是m文件的名字,生成别的m文件就把add换成你的m文件的名字即可。
-
6
成功后会在MATLAB安装位置生成十个文件。
MATLAB到这里就配置完成了,动态链接库也生成了。
END
方法/步骤2
-
1
C++的相关操作。
新建一个win32控制台程序matlabtest(空项目),添加test.cpp
-
2
点击 项目->Matlabtest属性
C/C++ -> 常规 -> 附加包含目录:
C:\Program Files\MATLAB\R2015a\extern\include(添加你自己的路径)
-
3
链接器 -> 常规 -> 附加库目录:
"C:\Program Files\MATLAB\R2015a\extern\lib\win64\microsoft";
C:\Program Files\MATLAB\R2015a\bin\add(MATLAB生成的是个文件)
-
4
链接器 -> 输入 -> 附加依赖项:
mclmcrrt.lib;mclmcr.lib;add.lib
-
5
将add.lib add.h文件复制到你的工程目录,其中 .h 文件和 test.cpp 文件同目录, .lib 文件放到可执行目录中,也即Debug目录(需编译一次才会出现),.dll文件复制到system32目录
-
6
将 .h 文件添加到新建的项目,编写 test.cpp 文件中的代码:
#include "add.h"
#include <iostream>
using namespace std;
int main()
{
if (addInitialize()) //必须的要初始化,格式为 名字Initialize()
{
cout << "成功" << endl;
}
else
{
cout << "失败" << endl;
return 0;
}
//定义3个mwArray类型变量,用于存放矩阵
mwArray a(2, 3, mxDOUBLE_CLASS);
mwArray b(2, 3, mxDOUBLE_CLASS);
mwArray c(2, 3, mxDOUBLE_CLASS);
double x[] = { 2,3,1,5,4,5 };
double y[] = { 8,8,7,9,11,12 };
double *sum = new double[6]; //注意这个是指针
// 给输入 mxArray 对象赋值
a.SetData(x, 6);
b.SetData(y, 6);
//调用DLL函数
add(1, c, a, b);
//获取结果
c.GetData(sum, 6);
//输出结果
for (int i = 0; i<2; i++)
{
for (int j = 0; j<3; j++)
cout << sum[j * 2 + i] << " ";
cout << endl;
}
cout << "it is successful !" << endl;
return 0;
}
-
7
更改解决方案平台,需要更改成X64
END
文章评论