Matlab调用C生成的dll的具体步骤一、C生成dll文件(以vs2008为例)
1创建项目: Win32->Win32项目,名称:MyDLL
2新建头文件testdll.h,并编写相关程序
注:一定要注意头文件的写法,此法是支持C的头文件,Matlab调用DLL只支持用C 语法写成的DLL,C++的一些关键特性如类、继承等都不支持,用起来的话局限性很大的,还不如单独再用M文件把算法再写一遍进行仿真呢。
具体程序如下
#ifndef MATLABDLLTEST_H
#define MATLABDLLTEST_H
#ifdef __cplusplus
extern "C"
{
#endif
__declspec(dllexport) double add(double x, double y);
#ifdef __cplusplus
}
#endif
#endif
3新建源文件testdll.cpp,并编写相关程序
具体程序如下所示:
#include "stdafx.h"
#include "testdll.h"
double add(double x, double y)
{
return (x+y);
}
4新建模块定义文件mydll.def,并编写相关程序
二、Matlab调用生成的dll
1、编译器准备
1)在Matlab的命令窗口输入:mex -setup
2)选择你的编译器,我的是:
[2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.0
2、加载DLL:把编译连接之后产生的myDLL.dll和testdll.h文件拷贝到Matlab的当前工作目录下,并编写.m函数
具体程序
clc;
clear all;
close all;
addpath('dll的具体路径即Matlab的当前工作路径')%输入dll文件具体的存储路径
loadlibraryMyDLLtestDLL.h alias lib%加载MyDLL库,并重命名为lib,注意加载时常常需要MyDLL的头文件
libfunctionsview lib %执行此命令后会生成如下窗口
calllib('lib', 'add', 1.0,2.0)%只有出现上述窗口才能使用此命令
参考链接:
1、/s/blog_70b3b3a701015e98.html(此文忘记加模
块定义文件mydll.def,而且在Matlab读取路径是的指令
也是错误的,参考本文的指令就能跑通)
2、/g710710/article/details/7255744(此链接的文章是
VS生成dll的方法,但如果想用Matlab调用生成的dll在编写头文件时一定要用上文的编写指令,而不这篇链接里的指令,因为链接里的指令是生成C++的指令,而Matlab只识别C的写法)。