Matlab调用C++ dll实例

下面以一个简单的小例子演示Matlab调用DLL的过程:

Matlab 为R2015b 64bit
Visual C++ 为Visual Studio 2012 64bit

  1. 编译器准备
    在Matlab的命令窗口输入:mex -setup
    选择你的编译器,我的是:
    Visual Studio 2012
  2. 编写你自己的DLL
    在Visual Studio 2012中新建一个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);  //*注意2个下划线*,编译器的宏定义
#ifdef __cplusplus
}
#endif
#endif

如果是64bit平台,需要把编译平台改为64bit
properties->general->configuration manager

编译选项
  1. 加载DLL:
    把编译连接之后产生的MatlabDllTest.dll和MatlabDllTest.h文件拷贝到Matlab的当前工作目录下,输入
    loadlibrary('MatlabDllTest','MatlabDllTest.h');
    (一定要有这步,如果dll不成功,会显示错误原因)

  2. 查看DLL中导出的函数

      libfunctions MatlabDllTest -full
      -full选项会列出导出函数的详细输入和输出参数,这是输出信息如下:
      Functions in library MatlabDllTest:
      double add(double, double)
  1. 调用函数
    calllib('MatlabDllTest', 'add', 1.3, 4.6)

此时就会输出正确的结果
ans =
5.9000

总结:这个例子比较简单,只是为了演示整个过程,如果你是真的用到了Matlab来调用外部DLL的这种方式的话,就要注意你的DLL工程要符合Matlab的要求啦,详细信息请自己查看Matlab的帮助文件,我就不罗嗦了。

参考链接1
参考链接2

推荐阅读更多精彩内容