C/C++与Matlab engine 混合编程

http://blog.csdn.net/xiaobudian09/article/details/6666633 

C/C++与Matlab engine 混合编程

  184人阅读  评论(0)  收藏  举报
 环境: VS2008  MATLABR2009a

一. 编译环境配置:设置相应的Matlab包含文件和库文件路径,添加相应的库文件

方法一:

1、点击 菜单工具/选项/项目和解决方案/VC++目录/显示目录下拉列表/包含文件,新建目录项,然后加入:MATLAB安装路径\extern\include;同理,在库文件下新建目录,加入:MATLAB安装路径\extern\lib\win32\microsoft

2、点击 菜单项目/属性/配置属性/链接器/输入,附加依赖项加入库文件:libmx.lib,libmat.lib,libeng.lib。

方法二:

1. 点击 项目/属性/配置属性/ C/C++/常规,附加包含目录项加入:MATLAB安装路径\extern\include;然后点击 链接器/常规,附加库目录加入:MATLAB安装路径\extern\lib\win32\microsoft

2. 操作同方法一的第二步。

   方法二的配置界面也可以在资源管理器中点击相应的项目,右击弹出快捷菜单,点击引用选项弹出。

 

注:对于不同的解决方案,方法一中的第1步只需配置一次,方法二是针对具体解决方案的,每次都需配置;库文件每次都需添加。

二. Matlab engine操作步骤

      1.打开engine

      2.在engine中执行Matlab指令

      3.关闭engine

三. 源程序中添加头文件

    在调用Matlab引擎之前,应在相关文件中加入一文件包含指令

                #include "engine.h"

该头文件包含了引擎API函数的说明和所需数据结构的定义。

 

四. Matlab engine常用API

    engOpen             打开Matlab engine

    engClose            关闭Matlab engine

    engEvalString       发送命令字符串让Matlab执行

    engOutputBuffer     创建Matlab输出缓冲区

    engGetVariable      从Matlab engine 工作空间中获取变量值

    engPutVariable      向Matlab engine 引擎工作空间写入变量值

    engGetArray         从Matlab engine 工作空间中获取一个Matlab矩阵

    engPutArray         向Matlab engine 工作空间中发送一个Matlab矩阵

    engSetVisible       显示/隐藏 Matlab engine 会话框

    API函数具体用法查阅相关资料。

五. Matlab 组件注册

    使用engOpen()打开Matlab引擎总是失败,问题可能就是Matlab组件没有注册。注册方法:点击开始/运行/cmd,在命令行提示窗口下更改到Matlab安装路径/bin,运行指令 matlab/regserver,注册成功后会弹出Matlab 命令窗口。

六、在engine中执行load 指令

    假如需要在engine工作空间读入大量数据文件,而数据文件不在Matlab搜索路径下,则指令

engEvalString(ep,"load -ascii xx.dat");

会失败。解决方法就是将当前数据文件的路径加入Matlab的搜索路径中,操作方法:点击Matlab菜单 File/ Set path,加入数据文件路径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值