VS2013和MATLAB R2014a混合编程配置
1、一、Matlab下配置编译器和生成C文件
1. 在MATLAB R2014a命令行窗口输入:mbuild –setup 并回车(注意setup减号前有空格),选择第一个选项;完成第三方编译器VS2013的配置

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、 打开add.m所在文件夹可看到以下文件。

4、二、VS2013下调用Matlab文件
1. 配置环境变量:这台电脑右击选择属性,更改设置-高级-环境变量,
用户变量:PATH
C:\Program Files\MATLAB\R2014a\bin\win64
系统变量:Path
C:\Program Files\MATLAB\R2014a\bin\win64
配置完系统变量要重新启动电脑才能生效。



5、 新建Win32控制台程序test,将add.h,add.lib,add.dll文件放到程序目录下。

6、 项目-test属性-配置属性-连接器-输入-附加依赖项。添加以下
add.lib
libmat.lib
libmex.lib
mclmcr.lib
mclmcrrt.lib

7、 把 add.h文件添加到头文件中,add.dll,add.lib文件添加到资源文件中

8、 设置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;
}