• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

matlab调用VC++生成的DLL

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[matlab]Monte Carlo模拟学习笔记发布时间:2022-07-18
下一篇:
Matlab PCA 算法发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap