在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论