matlab 动态目录调用程序,C/C++程序通过动态链接库调用Matlab程序

1 MATLAB编译器设置

需要设定对应的C++编译器才能编译.m文件生成可供C++调用的库文件。

在MATLAB命令行输入:mex –setup;然后继续输入:mbuild –setup,选择已安装的VC编译器。

2 将MATLAB程序编译成C/C++动态链接库

假设存在一个Add.m的文件需要编译成库文件:

function C=Add(A,B)

C=A+B;

end

2.1 将MATLAB程序编译成C动态链接库

采用mcc编译选项:

>>mcc –W lib:libname file.m –T link:lib

采用捆绑命令文件:

>>mcc –B csharedlib:libname file.m

2.2 将MATLAB程序编译成C++动态链接库

采用mcc编译选项:

>>mcc –W cpplib:libname file.m –T link:lib

采用捆绑命令文件:

>>mcc –B cpplib:libname file.m

2.3 生成的文件格式

成功编译会在Add.m的路径下生成一些文件:

9c79c1ecb92244657427ff73cec0c8f1.png

3 创建C/C++程序调用MATLAB函数

3.1设置项目平台

根据MATLAB的位数(32或64),设置相应的项目平台。

cf13c449bf0f344c2b69884c156465a5.png

3.2 工程环境设置

将前面生成的libAdd.dll、libAdd.h和libAdd.lib三个文件拷贝到新建的C++工程中,并设置工程属性。

项目属性——VC++目录——包含目录:

bcb750f5eafd4a901125cf8af089521f.png

项目属性——VC++目录——库目录:

1d16c6fd73e05606fbe51546693c2154.png

项目属性——链接器——输入:

libeng.lib

libmat.lib

libmex.lib

libmx.lib

mclmcrrt.lib

mclmcr.lib

libAdd.lib(最后这一个是Add.m生成的)

e1e60aa75ed0e23ee6630efceb662cb6.png

3.3 C++程序

#include #include"libAdd.h"

using namespacestd;intmain()

{if (!libAddInitialize())return -1;double a[4] = { 1,2,3,4};double b[4] = { 1,1,1,1};double c[4];

mwArray mwA(2, 2, mxDOUBLE_CLASS);

mwArray mwB(2, 2, mxDOUBLE_CLASS);

mwArray mwC(2, 2, mxDOUBLE_CLASS);

mwA.SetData(a,4);

mwB.SetData(b,4);

Add(1, mwC, mwA, mwB);

mwC.GetData(c,4);

cout<< "mwC=\n" << mwC <

cout<< "c=" <

{if (i%2==0)

{

cout<

}

cout<

}

cout<

libAddTerminate();return 0;

}

输出结果:

b5aff80cb82940408dcc1bd04ea06a50.png

Linux Matlab服务器进一步改造成Application Server(应用程序服务器) http://www.linuxidc.com/Linux/2014-09/106340.htm

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值