1、一、Matlab下配置编译器和生成C文件1. 在MATLAB R2014a命令行窗口输入:mbuild –setup 并回车(注意setup减号前有空格),选择第一个选项;完成第三方编译器VS2013的配置
2、2.新建脚本文件:如add.m,保存在Matlab的默认路径:C:\Users\Administrator\Documents\MATLAB;然后在命令行输入:mcc -W cpplib:add -T link:lib add.m –C(这里每个减号前同样要加空格)并回车,等待一分钟左右显示MEX已成功完成。其中 add.m 就是上面的测试程序。命令mcc -W cpplib:add -T link:lib add.m –C 中的cpplib:add 这个add自己可以随意修改,之后会生成add.lib, add.h, add.dll。
3、3. 打开add.m所在文件夹可看到以下文件。
4、二、VS2013下调用Matlab文件1. 配置环境变量:这台电脑右击选择属性,更改设置-高级-环境变量,用户变量:PATHC:\Program Files\MATLAB\R2014a\bin\win64系统变量:PathC:\Program Files\MATLAB\R2014a\bin\win64配置完系统变量要重新启动电脑才能生效。
5、2. 新建Win32控制台程序test,将add.h,add.lib,add.dll文件放到程序目录下。
6、3. 项目-test属性-配置属性-连接器-输入-附加依赖项。添加以下add.liblibmat.liblibmex.libmclmcr.libmclmcrrt.lib
7、4. 把 add.h文件添加到头文件中,add.dll,add.lib文件添加到资源文件中
8、5. 设置VC++目录
9、设置调试模式为debug X64。点击debug的三角形按钮显示配置管理器,将平台设置为x64
10、#include "stdafx.h"#include <iostream>#include "mclmcr.h"#include "matrix.h"#include "mclcppclass.h"#include"add.h"using namespace std;#pragma comment(lib,"add.lib")int _tmain(int argc, _TCHAR* argv[]){ if (!addInitialize()) //初始化,在libmysvd.h中 { cout << "Could not initialize libmysvd!" << endl; exit(0); } mwArray a(1, 1, mxDOUBLE_CLASS); mwArray b(1, 1, mxDOUBLE_CLASS); a(1, 1) = 20; b(1, 1) = 30; mwArray x(1, 1, mxDOUBLE_CLASS); mwArray y(1, 1, mxDOUBLE_CLASS); add(2, x, y, a, b); double *i = new double; double *j = new double; x.GetData(i, 1); y.GetData(j, 1); std::cout << "x=" << *i << " y=" << *j << std::endl; system("pause"); return 0;}