C/C++调用Matlab函数

测试环境:

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 


Are these correct [y]/n? y
 ...

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值