1、Matlab:
mbuild -setup;
mex -setup;选择相应的vs版本号
2、编写Matlab测试小程序:
function [z] = MyAdd(x,y)
z=x+y;
end
3、Matlab 编译成dll之类的文件
mcc -W cpplib:MyAdd -T link:lib MyAdd.m -C
(生成了
libMyAdd.dll
libMyAdd.h
libMyAdd.ctf
libMyAdd.lib
这四个是要用到的文件)
4、建立vs工程并把上述4个文件考到工程目录中,相应配置如下图所示:
\
5、测试程序:
#include "MyAdd.h"
int main(void)
{
double a = 6;
double b = 9;
double c;
// initialize lib,这里必须做初始化!
if( !MyAddInitialize())
{
std::cout << "Could not initialize libMyAdd!" << std::endl;
return -1;
}
// 为变量分配内存空间,可以查帮助mwArray
mwArray mwA(1, 1, mxDOUBLE_CLASS); // 1,1表示矩阵的大小(所有maltab只有一种变量,就是矩阵,为了和Cpp变量接轨,设置成1*1的矩阵,mxDOUBLE_CLASS表示变量的精度)
mwArray mwB(1, 1, mxDOUBLE_CLASS);
mwArray mwC(1, 1, mxDOUBLE_CLASS);
// set data,不用我解释了吧,很简单的,调用类里面的SetData函数给类赋值
mwA.SetData(&a, 1);
mwB.SetData(&b, 1);
// using my add,掉我自己写的函数
MyAdd(1, mwC, mwA, mwB);
// get data,不用我解释了吧,很简单的,调用类里面的Get函数获取取函数返回值
c = mwC.Get(1, 1);
printf("c is %f\n", c);
// 后面是一些终止调用的程序
// terminate the lib
MyAddTerminate();
// terminate MCR
mclTerminateApplication();
return 0;
}
6、运行结果