Matlab调用DLL方法

 
   本来想把算法写成一个DLL的形式,这样既可以在控制软件中方便调用,又可以在Matlab中通过调用外部DLL的形式对算法进行仿真分析,所以需要了解Matlab调用外部DLL的方法,但是后来发现Matlab调用DLL只支持用C语法写成的DLL,C++的一些关键特性如类、继承等都不支持,用起来的话局限性很大的,还不如单独再用M文件把算法再写一遍进行仿真呢。这里把Matlab调用DLL的过程记录一下吧,以后有用到的时候再说。
   在Matlab的Help中搜索"Calling Functions in Shared Libraries"即可看到关于此内容的帮助文档。
   下面以一个简单的小例子演示Matlab调用DLL的过程:
   1、编译器准备
      在Matlab的命令窗口输入:mex -setup
      选择你的编译器,我的是:
         [2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.0 
   2、编写你自己的DLL
        在Visual Studio 2008中新建一个Win32的Dll工程,不妨设名字为MatlabDllTest
        编辑MatlabDllTest.cpp:
#include "MatlabDllTest.h"

double  add( double  x,  double  y)
{
        return  (x+y);
}
      编辑MatlabDllTest.h:
#ifndef MATLABDLLTEST_H
#define MATLABDLLTEST_H

#ifdef __cplusplus
extern  "C"
{
#endif

        __declspec(dllexport)  double  add( double  x,  double  y);

#ifdef __cplusplus
}
#endif

#endif
   3、加载DLL:把编译连接之后产生的MatlabDllTest.dll和MatlabDllTest.h文件拷贝到Matlab的当前工作目录下,输入
       loadlibrary('MatlabDllTest','MatlabDllTest.h');
   4、查看DLL中导出的函数
       libfunctions MatlabDllTest -full
      -full选项会列出导出函数的详细输入和输出参数,这是输出信息如下:
         Functions in library MatlabDllTest:
         double add(double, double)
   5、调用函数
       calllib('MatlabDllTest', 'add', 1.3, 4.6)
      此时就会输出正确的结果
         ans =
               5.9000
   总结:这个例子比较简单,只是为了演示整个过程,如果你是真的用到了Matlab来调用外部DLL的这种方式的话,就要注意你的DLL工程要符合Matlab的要求啦,详细信息请自己查看Matlab的帮助文件,我就不罗嗦了。
   该博文中代码的高亮使用的是 代码发芽网提供的,主题是wombat,字体是Consolas。之前使用VIM输出高亮代码,代码中原来的缩进方式拷贝到博文中就乱了,好像是新浪博客对<pre>标签支持的问题。有知道解决方法的童鞋麻烦告知一声,不胜感谢!

注解:详细信息查看doc loadlibrary

来源:http://blog.sina.com.cn/s/blog_7ec5cc8701013fc7.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值