VC环境和Matlab混合编程的实现方法

环境:VC6.0    Matlab6.5

就我所知,VC环境和Matlab混合编程的实现方法主要有两个,一个是利用matlab的.m文件转换为C++文件,并生成.dll的方法;另一个是在VC中调用matlab的compile引擎,通过matlab编辑环境进行操作。

方法1:MATLAB6.5中将m文件转化成dll文件,然后在VC中调用该dll文件

 

 1、必须保证编译器的正确配置,因为编译器使用了C/C++库函数,所以在使用前需要使用

 

  mex -setup mbuild -setup

以上两个命令对编译器进行配置,若以前进行配置了就不需要这一步了。

具体配置过程省略,反正就是都选VC6.0环境就一切OK!

    2、设置头文件和库文件的路径:工具->选择,目录

 

   在inlude选项中添加如下路径(这随你自己的Matlab安装路径有变化):

   D:/matlab/extern/include/cpp

  D:/matlab/extern/include

 

  在Library选项中添加如下路径:如图三 D:/matlab/extern/lib/win32/microsoft/msvc60 D:/matlab/extern/lib D:/matlab/bin

路径还是根据自己的情况做相应修改。

 function y=huatu _test()

3、添加库文件:工程->设置->Link General选项中的对象库/模块中将目录D:/matlab/extern/lib/win32/microsoft/msvc60目录下的所有库文件名写上(有些文章说只需要将几个个别的写上,我认为还是都添加上,这样不管遇到什么库函数,我都可以对付):

 

4、MATLAB打开文本编辑器(File->New->M-file)写一个简单的m函数

 

x=-10:0.1:10;

y=sin(x);

plot(x,y,"*");   %文件保存为huatu_test.m

5.MATLAB命令窗口用如下命令生成dll文件和调用dll所需要的文件

 mcc -t -w libhg:dlltest -T link:lib -h libmmfile.mlib huatu_test.m

 生成的文件将会保存在当前目录下,默认的当前目录为:MATLAB根目录/work,找到dlltest.h dlltest.libdlltest.dll文件,这三个文件是我们需要的。

 

6.VC中新建一个名为ceshi基于对话框的工程,在工程中添加一个名为"测试"button按钮。将dlltest.h dlltest.libdlltest.dll文件拷贝到当前工程目录下,并通过Project->Add To Project->Files 选择拷贝到当前目录下的三个文件,将文件引入工程。

ceshiDlg.cpp文件中添加头文件dlltest.h,#include "dlltest.h",打开dlltest.h文件,里面有有关函数的定义,找到其中三个函数:

extern mxArray* mlfHuatu_test(void);     extern void dlltestInitialize(void); extern void dlltestTerminate(void);

从字面意思可以知道,dlltestInitialize(void)用来初始化动态链接库,dlltestTerminate(void)用来结束动态链接库的操作,mlfHuatu_test(void)用来执行画图功能。

将三个函数拷贝到button响应代码中,进行修改:

void CeshiDlg::OnButton1()

{

    dlltestInitialize();

    mlfHuatu_test();

      dlltestTerminate();

}

完成以上操作,就可以实现混合编程的一种途径了。

方法2:利用Matlab自己的编辑引擎

开始依旧是配置Matlab和VC环境,方法和“方法一”中描述一样。

接着新建VC的MFC工程,在其中添加按钮,caption属性为"调用matlab引擎”,并在CMatlabEnginDlg中添加#include "engine.h"button响应代码中添加如下代码:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值