本文主要解决如下问题:如何在MATLAB中调用C语言编写的外部库函数?
这是一个曾经碰到过的具体问题:因为某些限制,我需要在MATLAB上控制一个硬件设备读取数据。该硬件设备是HID接口的,但MATLAB的Instrument Control Toolbox没有提供过HID接口。我在Github上找到了HID接口API,这是一个用C编写的HID设备接口库。
https://github.com/signal11/hidapigithub.com用Visual Studio编译一下可得到hidapi.dll,这是一个动态链接文件,包含了HID接口的各种API函数。在MATLAB中,可以加载这种.dll文件(前提是也拥有对应的.h头文件)。将头文件和dll文件复制到同一个文件夹下,用loadlibrary函数加载dll文件。
% 加载前使用libisloaded函数判断是否已加载库函数
% 如果重复加载会报错
if ~libisloaded('hidapi')
loadlibrary('hidapi','hidapi.h');
end
利用libfunctions函数可以返回加载的库中所有函数的名称。
libfunctions('hidapi')
![51ce48449d7bbed324e0397666d6d43c.png](https://img-blog.csdnimg.cn/img_convert/51ce48449d7bbed324e0397666d6d43c.png)
更常用的是直接使用libfunctionsview函数,该函数会打开一个新的窗口,除了显示所有的库函数外,还会显示所有函数的输入与输出。
libfunctionsview('hidapi')
![4fe47a929bad51adc766f675d4836b9b.png](https://img-blog.csdnimg.cn/img_convert/4fe47a929bad51adc766f675d4836b9b.png)
最重要的部分来了,