vs2010 matlab混编,VC10.0(VS2010) 与 matlab混编工程配置

本文介绍了如何在Visual Studio 2010中配置MATLAB引擎,以便在C++程序中调用MATLAB的数学计算功能。通过设置VC++ Directories、Linker的Input和General属性,添加必要的include目录、库文件和依赖项,成功避免了编译错误。提供了详细的配置步骤和测试代码,展示了如何在C++中启动MATLAB引擎、执行计算并获取结果。
摘要由CSDN通过智能技术生成

VC提供寄存器,matlab提供完备的数学公式,两者的结合是不是注定会擦出完美的火花来呢~

a4c26d1e5885305701be709a3d33442f.png不过,网上一通找,也木有找到具体的配置方法,共同点就是

‘engine.h’头文件的引用,不过编译之前,许多include

和lib添加决定着各种dll文件查找的命运,VC6.0和VS的设置会有不同,这里只介绍VS2010版本的(亲身试验,木有问题的才放心写的哦

a4c26d1e5885305701be709a3d33442f.png),为了避免以后的悲剧

a4c26d1e5885305701be709a3d33442f.png我还是写下来留念一下吧~

a4c26d1e5885305701be709a3d33442f.png

matlab 版本:r2010b

环境: VS2010

配置:

1. 菜单:Project → Properties... 选择

Configuration Properties下的 VC++ Directories。

在 Include Directories

栏目中添加matlab相关的include文件。例如..\MATLAB\R2010b\extern\include和..\MATLAB\R2010b\extern\include\win32

在 Library Directories

栏目中添加matlab相关的lib文件。例如:...\MATLAB\R2010b\extern\lib\win32\microsoft。(为了保险,

a4c26d1e5885305701be709a3d33442f.png我把这个lib文件也加进去了:...\MATLAB\R2010b\lib\win32)

2. 菜单:Project → Properties... 选择

Configuration Properties下的 Linker → Input。

在 Additional

Dependencies栏目中输入项目需要引用matlab的的lib文件库。例如:libeng.lib libmx.liblibmex.lib等(我直接写了三个~其他的什么的我也不清楚

a4c26d1e5885305701be709a3d33442f.png)。如果要对所有的配置添加lib库文件,可先将左上角的

Configuration 中的 Active(Debug) 设置为 All

configurations。

3. 菜单:Project → Properties... 选择 Configuration

Properties下的 Linker → General。

在 Additional Library Directories

栏目中,添加库所在的目录名称。(目录查找可以根据第二步中填写的lib名字进行查找,如查找libeng,不过这里需要用后缀'.dll')。例如:...\MATLAB\R2010b\bin\win32

这一步相当的重要,不然的话,各种dll文件找不到,lib文件找不到之类的报错,头都大死了。

现在就可以混编程序了~

a4c26d1e5885305701be709a3d33442f.png再也不用编译时出现好多 undefined 和

xxx之类的错误哦~

测试代码:(网上找来的……不过忘了源头在哪里了,先

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png,对编写者怀有无比的崇敬之情,允许我转载一下吧

a4c26d1e5885305701be709a3d33442f.png)

#include "engine.h" // 包含引擎函数的头文件

#include

int main(int argc, char *argv[])

{

char buf[1024];

Engine *ep = engOpen(NULL); // 启动Matlab

engSetVisible(ep, false); // 设置窗口不可见

engOutputBuffer(ep, buf, 1024);

mxArray *mxN = mxCreateDoubleScalar(3);

engPutVariable(ep, "N", mxN);

// 将变量放置到Matlab空间中

engEvalString(ep, "D=rand(N, N)");

// 在Matlab环境中执行代码

mxArray *mxData = engGetVariable(ep, "D");

// 获得返回的结果

std::cout << buf

<< std::endl;

engClose(ep); // 关闭Matlab

system("pause");

return 0;

}

编译成功,

a4c26d1e5885305701be709a3d33442f.png各种开心~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值