1.准备工作配置Matlab编译器(参见MMC使用)
2.Matlab中M文件转换
2.1先写一个m文件,这里就写了一个简单的输入n,输出magic(n)的测试程序
function [matrix]=magicMatrix(n)
if n>0
matrix =
magic(n)
end
2.2命名为magicMatrix.m保存到magic目录下,
2.3matlab命令行中运行deploytool
2.4选择create a
new deployment project,选择matlab compiler,c++ shared
library,命名为magic.prj,保存,出现的project;
2.5右键点击
exported functions, add files, 将magicMatrix.m加进去,或者直接从工作目录中拖进去;
2.6build
the project,
完成后得到一个magic文件夹,包含distrib和src两个子目录,distrib中的文件就是将magicMatrix.m加到C++调用要使用
的文件,包括
magicMatrix.ctf,magicMatrix.dll,magicMatrix.exports,magicMatrix.h,matrixMatrix.lib;
3
VC++创建工程
vs中新建一个console application,添加main.cpp,将之前得到的文件全部复制到程序目录下(主要是.h
,.dll, .lib),
main.cpp为:
//D:\Program
Files\MATLAB\R2007a\extern\lib\win32\microsoft
#pragma comment(lib,"libdflapack.lib")
#pragma comment(lib,"libemlrt.lib")
#pragma comment(lib,"libeng.lib")
#pragma comment(lib,"libfixedpoint.lib")
#pragma comment(lib,"libmat.lib")
#pragma comment(lib,"libmex.lib")
#pragma comment(lib,"libmwlapack.lib")
#pragma comment(lib,"libmwservices.lib")
#pragma comment(lib,"libmx.lib")
#pragma comment(lib,"libut.lib")
#pragma comment(lib,"mclcom.lib")
#pragma comment(lib,"mclcommain.lib")
#pragma comment(lib,"mclmcr.lib")
#pragma comment(lib,"mclmcrrt.lib")
#pragma comment(lib,"mclxlmain.lib")
//m文件生成的
#pragma comment(lib,"magicMatrix.lib")
#include "magicMatrix.h"
#include
using namespace std;
int main()
{
cout<
magicMatrixInitialize(); //initial
// magicMatrix(int nargout, mwArray& matrix,
const mwArray& n);
mwArray
n(1,1,mxINT8_CLASS);
short int
nargout = 1;
int
temp[1]={3};
n.SetData(temp,1);
mwArray
matrix(3,3,mxINT8_CLASS);
magicMatrix(nargout,matrix,n);
cout<
magicMatrixTerminate();//terminate
return
0;
}
前面的一些lib是D:\Program
Files\MATLAB\R2007a\extern\lib\win32\microsoft目录下的lib也可以通过project
setting设置,考虑其他项目才这样写的,主要用到的数据结构可以参考compiler的帮助文件。运行就可以得到matlab运行得到的结果。