MATLAB®共享库接口只支持C库例程。金宝app大多数设计用于多种语言和平台的专业编写的库都工作得很好。有关更多信息,请参见在共享库中调用C函数.
许多非商业类库或仅从c++测试过的类库具有不可用的接口,需要修改或接口层。在这种情况下,我们建议使用墨西哥人的文件.
共享库接口不支持c++类或重载函数元素。金宝app使用MATLAB c++接口代替。有关更多信息,请参见c++库在MATLAB.
printf
函数MATLAB不显示C的输出printf
命令窗口。
可以使用type来修改位字段声明int
或一个等价的。例如,如果你的库在头文件中声明了以下内容:
int myfunction ();Struct mystructure{/*注意字段位的总和*/ unsigned field1:4;无符号field2: 4;};
编辑头文件并将其替换为:
int myfunction ();struct mystructure{/*要在MATLAB中操作的字段宽度为8位*/ /*一个char在所有支持的平台上是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
是国防部(256)
,byte2
是f / 256
,词= byte2 * 256 + byte1
.编辑源代码之后,重新生成库。
头文件必须与平台上支持的编译器兼容。金宝app有关支持的编译器的最新列表,请参见金宝app金宝app支持和兼容编译器.不能加载对其他编译器具有显式依赖关系的外部库。
共享库接口不支持使用函数指针的库函数。金宝app
对多级指针和包含金宝app指针的结构的有限支持。不支持使用具有两级以上间接声明的输入、输出和结构成员。金宝app例如,* * * outp两倍
翻译成doublePtrPtrPtr
不支持。金宝app
共享库接口不支持参数数量可变的库函数,用省略号表示(金宝app...
).
可以在原型文件中创建多个别名函数,用于调用该函数的每组参数对应一个别名函数。有关更多信息,请参见MATLAB原型文件.