基于vs2010
基于matlab2014a
基于64位操作系统
1、在matlab中定义一个函数
function C=Add(A,B)
C=A+B;
end
2、命令行输入“mex -setup c++”%注意mex和setup后面都有空格。选择编译器,自动出现vs2010
3、命令行输入“mbuild -setup”%注意mbuild后面都有空格。选择c++模式
4、命令行输入“mcc -W cpplib:libAdd -T link:lib Add.m”%注意空格,最后的Add.m是要编译的文件。
等待,编译完成会有提示,同时会生产一些文件,其中,dll和lib和h文件是我们需要的。
5、打开vs2010,新建控制台程序。
(如果不选择会出现matlabAdd.obj : error LNK2019: 无法解析的外部符号 _mclcppCreateError_proxy,。。。这种错误)
6、编译程序,将4中的三个文件分别拷贝到项目中。dll拷贝到。。\matlabAdd\x64\Debug下(matlabAdd是建立的项目名,在dubug模式下调试)
新建一个文件夹,将lib和h拷贝到里面,我们还要拷贝一些matlab的内容,为了管理。
7、打开matlab的安装目录,要拷贝一些东西到6中文件夹内。h文件在include中,lib文件在lib中的win64的microsoft下。
8、在VS中将这些文件添加进项目。(解决方案右键,添加-现有项)
9、添加测试程序如下,内容都有注释。
#include
#include "matlab/libAdd.h"//函数添加头文件
void main()
{
if (!libAddInitialize())//初始化,前面是libAdd是=要注意,不要搞错
return;
int a=1;
int b=8;
int c;
mwArray mwA(1,1,mxINT64_CLASS);//matlab中的数据都是矩阵,所以要用矩阵转换
mwArray mwB(1,1,mxINT64_CLASS);
mwArray mwC(1,1,mxINT64_CLASS);
mwA.SetData(&a,1);//将a加入矩阵
mwB.SetData(&b,1);
Add(1,mwC,mwA,mwB);//调用
c=mwC.Get(1,1);//获取数据
std::cout<
10、如果没有加6行的初始化代码,出现如下错误。(matlabAdd.exe 中的 0x00000000 处有未经处理的异常: 0xC0000005: 在位置 0x0000000000000000 发生访问冲突)