matlab调用VC++生成的DLL

matlab是一种脚本语言,执行效率肯定没有C语言那样高效,当然matlab支持调用由C语言生成的.dll动态链接库,从而可以达到matlab与C语言混合便宜的效果。

 注意:我使用的平台是matlab2016a与vs2015

1、新建一个空项目

2、分别新建一个H文件和一个C文件,结构目录如下图:

我们来写一个测试程序,其中源文件和头文件如下所示:

// TestDll.h

#ifndef __DSP_H__
#define __DSP_H__
#ifdef __cplusplus
extern "C" {
#endif
#define API_DEC __declspec(dllexport)
API_DEC int add(int a, int b);
#ifdef __cplusplus
}
#endif
#endif  //__DSP_H__


//TestDll.cpp

#include"TestDll.h"
#pragma warning(disable : 4996)  
int add(int a, int b)
{
    return a + b;
}

注意:matlab只能调用C语言,所以如果检测到为C++编写的函数会自动变成C语言的输出;宏:API_DEC的作用是产生.dll文件的固有写法,是将函数符号导出,如果你希望别人通过.dll文件调用你写的程序,在函数声明的时候必须加上__declspec(dllexport);C文件中是不需要main函数的。

 

 3、依据matlab位数(32位(X86),64位(X64)),配置输出文件,如下图:

注意:平台配置一定为X64,配置类型输出为.dll

 

4、点击生成就可以产生TestDll.dll

5、将.dll文件和.h文件一起放到matlab文件目录下面(与调用的地方属于同一级目录)

6、  matlab上操作方法:

[notfound,warnings] = loadlibrary('TestDll','TestDll.h'); %加载.dll库
calllib('TestDll', 'add',1,2); %调用动态库里面的函数
%此时就会输出正确的结果
      ans =
          3
注意1:loadlibrary加载完.dll库可以使用libfunctions dsp -full查看具体函数
>> libfunctions dsp -full  
类 lib.dsp 的方法:
int32 add(int32, int32)
注意2:unloadlibrary TestDll  会卸载.dll 文件,释放内存

 

PS:这是我写的第一篇博客,只希望与大家共同进步,20180622

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值