测试环境:
WindowXP 32位
Visual studio 2008
Matlab R2012b
1.编写Matlab .m脚本文件
// Madd.m
function res=Madd(a,b)
res=a+b
end
2.配置Matlab编译器
在Matlab命令行中输入命令:mex -setup.
>> mbuild -setup
Welcome to mbuild -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/compilers/R2012b/win32.html
Please choose your compiler for building shared libraries or COM components:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2012b\sys\lcc
[2] Microsoft Visual C++ 2008 SP1 in C:\Program Files\Microsoft Visual Studio 9.0
[0] None
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C++ 2008 SP1
Location: C:\Program Files\Microsoft Visual Studio 9.0
...
Trying to update options file: C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2012b\mexopts.bat
From template: C:\PROGRA~1\MATLAB\R2012b\bin\win32\mexopts\msvc90opts.bat
Done . . .
直到出现上述内容,即可确认成功。
接下来在命令行中输入命令: mbuild -setup。重复上述操作即可。
3.将Matlab脚本转换成dll文件
在Matlab命令行中输入命令: mcc -W cpplib:libMadd -T link:lib Madd.m,命令执行成功会在.m文件所在目录下多出以下8个文件:
libMadd.cpp
libMadd.dll
libMadd.exp
libMadd.exports
libMadd.h
libMadd.lib
mccExcludedFiles.log
readme.txt
4.新建一个vs2008项目,在项目属性中作如下配置。
上述设置也即是指定Matlab的include和lib的位置,以及要使用的库,其中使用的库有:
libeng.lib, libmat.lib, libmex.lib, libmx.lib, mclmcrrt.lib, mclmcr.lib, libMadd.lib
5.编写C++程序
#include "stdafx.h"
#include "libMadd.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
if (!libMaddInitialize())
return -1;
int a = 1,b = 3;
int res;
mwArray mwA(1,1,mxINT32_CLASS);
mwArray mwB(1,1,mxINT32_CLASS);
mwArray mwRes(1,1,mxINT32_CLASS);
mwA.SetData(&a,1);
mwB.SetData(&b,1);
Madd(1,mwRes,mwA,mwB);
res = mwRes.Get(1,1);
cout<<"res="<<res<<endl;
libMaddTerminate();
system("pause");
return 0;
}
转载:http://www.cnblogs.com/yangang92/p/5312991.html