Matlab配置visualstudio编译器
向Matlab中输入mex -setup -v命令,并如下图所示进入注册表修改相应部分使相应的“否”变成“是”。
- Microsoft\VisualStudio\SxS\VS7:Visual studio的安装路径
- Microsoft\VisualStudio\SxS\VC7:Visual studio的安装路径下的VC目录
- Microsoft\Microsoft SDKs\Windows\v8.0:Microsoft SDKs的v8.0 目录
- VS110COMNTOOLS:Visual studio的安装路径下的Common7\Tools\目录

2.VS配置matlab
libmx.lib
libmat.lib
libeng.lib
libmex.lib
mclmcrrt.lib
mclmcr.lib
+m文件生成的lib
注意:与自己电脑系统相对应的bin路径还需要加入到系统环境变量中,我的电脑是D:\MATLAB\R2014a\bin\win64,如下图所示:
另外一定要设置和自己电脑位数相同的平台配置——64位系统要把debug平台改为64位。
3.c++调用matlab引擎
#include"engine.h"
Engine * m_ep;
4.c++调用m文件
Matlab中输入deploytool命令,使用Library Compiler,将m文件写成函数形式使用package编译。将dll,lib文件都放到debug文件夹中,头文件添加到工程中。
注意:m文件必须为函数且输入输出都有必须有赋值,不然会出现闪退现象。
以下是调用函数DrawDiamond的代码:
double a=1;
if( DrawDiamondInitialize()) //初始化DrawDiamond的lib调用,初始化可放在Frame的构造函数中使得框架在创建时就使其初始化
{
mwArray mw1(1,1,mxDOUBLE_CLASS,mxREAL); //mw1为1行一列的矩阵
mw1.SetData(&a,1); //将a赋给mw1
mwArray mw2(1,1,mxDOUBLE_CLASS,mxREAL);
DrawDiamond(1,mw2,mw1);
DrawDiamondTerminate(); //终止DrawDiamond的lib调用
}
注:if中的条件DrawDiamondInitialize()必须要先调用才能调用编译的函数。