主要内容

共享库支持的限制金宝app

MATLAB金宝app支持C库例程

MATLAB®共享库接口只支持C库例程。金宝app大多数专业编写的用于多种语言和平台的库都工作得很好。有关更多信息,请参见在共享库中调用C函数

许多非商业库或只从c++测试过的库都有不可用的接口,需要修改或建立接口层。在这种情况下,我们建议使用MEX文件

加载c++库

共享库接口不支持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

工会不受支持。金宝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

共享库接口不支持参数个数可变的库函数,用省略号(金宝app...).

您可以在原型文件中创建多个别名函数,每个别名函数对应用于调用该函数的一组参数。有关更多信息,请参见MATLAB原型文件

相关话题