您的位置:首页 > 编程语言 > MATLAB

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

2010-06-23 13:17 477 查看
环境: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.lib和dlltest.dll文件,这三个文件是我们需要的。

6.在VC中新建一个名为ceshi基于对话框的工程,在工程中添加一个名为"测试"的button按钮。将dlltest.h 、dlltest.lib和dlltest.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响应代码中添加如下代码:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: