MATLAB®共享库接口只支持C库例程。金宝app大多数专业编写的用于多种语言和平台的库都工作得很好。有关更多信息,请参见在共享库中调用C函数.
许多非商业库或只从c++测试过的库都有不可用的接口,需要修改或建立接口层。在这种情况下,我们建议使用MEX文件.
共享库接口不支持c++类或重载函数元素。金宝app使用MATLAB c++接口代替。有关更多信息,请参见Matlab中的C ++库.
printf
功能MATLAB不显示C的输出printf
命令窗口的功能。
可以使用type修改位字段声明㈡
或等同的。例如,如果您的库在其标题文件中声明了以下内容:
int myfunction ();Struct mystructure{/*注意字段位的总和*/ unsigned field1:4;无符号field2: 4;};
编辑头文件并将其替换为:
int myfunction ();struct mystructure {/ *字段8宽以在matlab * / / *中操纵的位为8位,所有支持的平台* / char allfields;金宝app};
编辑源代码后,重新构建库。然后,在MATLAB中使用位掩码访问这两个领域的数据是可能的。
字符
定义枚举
不受支持。金宝app在C语言中,一个字符
常量,例如“一个”
,自动转换为其等效数字(65)。MATLAB不转换常数。使用这种类型的枚举
,通过替换来编辑头文件“一个”
数字65 (int8 (A) = = 65
).例如,替换:
enum enum1 {vala ='a',valb ='b'};
:
enum Enum1 {ValA = 65, ValB = 66};
然后重建库。
工会不受支持。金宝app作为一种解决方案,修改源代码以删除联盟
声明并将其替换为最大的备选项。然后,根据需要编写MATLAB代码来解释结果。例如,编辑源代码并替换以下联合:
Struct mystruct {union {Struct {char byte1,byte2;短词;};};
:
Struct mystruct{短词;};
在一个小端端机器上,Byte1.
是mod(f,256)
,Byte2.
是f / 256
, 和词= byte2 * 256 + byte1
.编辑源代码后,重建库。
头文件必须与平台上支持的编译器兼容。金宝app有关支持的编译器的最新列表,请参见金宝app金宝app支持和兼容的编译器.您无法在其他编译器上加载具有显式依赖项的外部库。
共享库接口不支持使用函数指针的库函数。金宝app
对多级指针和包含金宝app指针的结构的有限支持。不支持使用两级以上间接声明的输入、输出和结构成员。金宝app例如,* * * outp两倍
翻译成doubleptrptrptr.
不支持。金宝app
共享库接口不支持参数个数可变的库函数,用省略号(金宝app...
).
您可以在原型文件中创建多个别名函数,每个别名函数对应用于调用该函数的一组参数。有关更多信息,请参见MATLAB原型文件.