介绍使用。COM组件创建时的数据转换规则MATLAB®编译器SDK™产品。这些组件是支持与自动化兼容的数据类型的双接口COM对象。万博1manbetx
笔记
自动化(以前称为OLE Automation)是一种允许软件包将其独特功能暴露给脚本工具和其他应用程序的技术。自动化使用组件对象模型(COM),但可以独立地从其他OLE功能实现,例如就地激活。
谨慎
请注意,IIS(Internet信息服务)通常会根据它可能提出安全风险,以防止大多数COM自动化。所以,xlsread.
和其他自动化服务在IIS服务时可能会失败,导致如下错误未设置对象引用
.
对象上调用方法时MATLAB编译器SDK组件时,将输入参数转换为MATLAB内部数组格式并传递给已编译的MATLAB函数。当函数退出时,输出参数将从MATLAB内部数组格式转换为COM自动化类型。
COM客户端将编译后的MATLAB函数中的所有输入和输出参数作为类型传递变体
.COM.变体
类型是几个简单数据类型的联合。一个类型变体
变量可以存储任何简单类型的变量,以及这些值的任何数组。
Win32 API提供了许多用于创建和操纵的功能变体
s在c / c ++中,和微软®Visual Basic®为此类型提供母语支持。万博1manbetx看看微软Visual Studio®COM定义和API支持的文档万博1manbetx变体
年代。变体
变量是自描述的,并将其类型代码存储为结构的内部字段。
笔记
关于数据的讨论涉及到这两个方面变体
和变体
数据类型。变体
是c++名和变体
是Visual Basic中的相应数据类型。
看支持的变体类型代码万博1manbetx来查看变体
编译器组件支持的类型代万博1manbetx码。
看matlab到COM变体转换规则和Matlab转换规则的COM变量用于COM之间的转换规则变体
s和MATLAB数组。
支持的变体类型代码万博1manbetx
变体类型代码 (C / C ++) |
C / C ++类型 | 变体类型代码(Visual Basic) | 视觉基本类型 | 定义 |
---|---|---|---|---|
VT_EMPTY |
- |
vbEmpty |
- |
未初始化 |
VT_I1 |
字符 |
- |
- |
签名一个字节字符 |
vt_ui1. |
无符号 |
vbByte |
字节 |
无符号1字节字符 |
VT_I2 |
短 |
vbInteger |
整数 |
签名的双字节整数 |
vt_ui2. |
毫无符号短期 |
- | - | 无符号两字节整数 |
VT_I4 |
长 |
vbLong |
长 |
签署了4字节整数 |
vt_ui4. |
无符号长 |
- | - | 无符号4字节整数 |
VT_R4 |
浮动 |
vbSingle |
单 |
IEEE®4字节浮点值 |
VT_R8 |
双 |
vbDouble |
双 |
IEEE八字节浮点值 |
vt_cy. |
CY. + |
VBCurrency. |
货币 |
货币值(64位整数,缩放10,000) |
vt_bstr. |
型 + |
vbString |
细绳 |
字符串值 |
VT_ERROR |
sc + |
vbError |
- |
|
VT_DATE |
日期 + |
vbDate |
日期 |
表示日期和时间的八字节浮点值 |
vt_int. |
int |
- | - | 带符号整数;等同于类型 |
VT_UINT |
无符号整型 |
- | - | 无符号整数;等同于类型 |
vt_decimal. |
小数 + |
vbDecimal |
- | 96位(12字节)无符号整数,按10的可变次幂缩放 |
VT_BOOL |
VARIANT_BOOL + |
vbboolean. |
布尔 |
双字节布尔值(0xFFFF = True;0 x0000 = False) |
vt_dispatch. |
IDispatch * |
vbObject |
对象 |
|
VT_VARIANT |
变体 + |
vbvariant. |
变体 |
|
<任何东西> | VT_ARRAY |
位结合 |
|||
<任何东西> | VT_BYREF |
位结合 |
|||
+表示Windows.®具体类型。不是标准C / C ++的一部分。 |
MATLAB到COM变量转换规则
MATLAB数据类型 | 标量数据的变体类型 | 阵列数据的变体类型 | 评论 |
---|---|---|---|
细胞 |
一个1×1个单元格阵列转换为单个 |
多维单元阵列转换为a |
|
结构 |
|
|
麦克拉布 |
字符 |
一个1×1 |
一个1-by-L |
不支持字符串数组万博1manbetx |
疏 |
|
|
MATLAB稀疏阵列转换为 |
双 |
一个实的1 × 1双矩阵转换成A |
一个真实的多维双矩阵转换成 |
复杂数组通过编译MATLAB函数传递 |
单 |
一个真正的1-by-1单个矩阵转换为a |
一个真实的多维单矩阵转换成 |
复杂数组通过编译MATLAB函数传递 |
int8 |
一个真正的1×1 |
一个真正的多维 |
复杂数组通过编译MATLAB函数传递 |
uint8 |
一个真正的1×1 |
一个真正的多维 |
复杂数组通过编译MATLAB函数传递 |
int16 |
一个真正的1×1 |
一个真正的多维 |
复杂数组通过编译MATLAB函数传递 |
uint16 |
一个真正的1×1 |
一个真正的多维 |
复杂数组通过编译MATLAB函数传递 |
int32 |
一个1×1 |
一个多维 |
复杂数组通过编译MATLAB函数传递 |
uint32 |
一个1×1 |
一个多维 |
复杂数组通过编译MATLAB函数传递 |
函数处理 |
|
|
不支持万博1manbetx |
Java®班级 |
|
|
不支持万博1manbetx |
用户类 |
|
|
不支持万博1manbetx |
逻辑 |
|
|
COM变体MATLAB转换规则
变体类型 | MATLAB数据类型(标量或数组数据) | 评论 |
---|---|---|
VT_EMPTY |
N/A |
创建空数组。 |
VT_I1 |
int8 |
|
vt_ui1. |
uint8 |
|
VT_I2 |
int16 |
|
vt_ui2. |
uint16 |
|
VT_I4 |
int32 |
|
vt_ui4. |
uint32 |
|
VT_R4 |
单 |
|
VT_R8 |
双 |
|
vt_cy. |
双 |
|
vt_bstr. |
字符 |
一种 |
VT_ERROR |
int32 |
|
VT_DATE |
双 |
|
vt_int. |
int32 |
|
VT_UINT |
uint32 |
|
vt_decimal. |
双 |
|
VT_BOOL |
逻辑 |
|
vt_dispatch. |
不同 |
目前,支持Excel万博1manbetx® |
任何东西 | VT_BYREF. |
不同 |
根据他们指向的规则处理到任何基本类型的指针。生成的MATLAB阵列包含值的深度副本。 |
任何东西 | VT_ARRAY |
不同 |
多维 |
组件有控制数组数据在两个方向上如何格式化的标志。通常,您应该开发客户端代码,使MATLAB函数的预期输入和输出与已编译的COM对象上的相应方法相匹配,符合中列出的规则matlab到COM变体转换规则和Matlab转换规则的COM变量.在某些情况下,这是不可能的,例如,当现有的MATLAB代码与第三方产品如Excel一起使用时。
下表显示了数组格式化标志。
数组格式标志
国旗 | 描述 |
---|---|
|
定义用于输入数组的数组格式化规则。
|
|
属性使用的输入数组间接级别 |
|
定义用于输出数组的数组格式化规则。输出数组是一个MATLAB数组,由编译后的COM对象创建,作为一个输出参数从方法调用发送到客户端。这面旗帜的值, |
|
(仅适用于嵌套单元格数组。)的输出数组间接级别 |
|
(仅适用于Excel范围。)当从方法调用的目标输出是Excel工作表中的一系列单元格,并且在呼叫时未知输出阵列大小和形状,请将此标志设置为 |
|
将此标志设置为 |
MATLAB编译器SDK组件包含控制转换的标志变体
类型转换为MATLAB类型。这些旗帜如下:
此标志告诉数据转换器将所有数字转换变体
数据到一个特定的MATLAB类型。变体
受此标志影响的类型代码是VT_I1
那vt_ui1.
那VT_I2
那vt_ui2.
那VT_I4
那vt_ui4.
那VT_R4
那VT_R8
那vt_cy.
那vt_decimal.
那vt_int.
那VT_UINT
那VT_ERROR
那VT_BOOL
,VT_DATE
.此标志的有效值是mwTypeDefault
那mwTypeChar
那mwTypeDouble
那mwTypeSingle
那mwTypeLogical
那mwTypeInt8
那mwTypeUint8
那mwtypeint16
那mwTypeUint16
那mwtypeint32.
,mwTypeUint32
.
这个标志的默认值是,mwTypeDefault
,根据列出的规则转换数字数据数据转换.
这个标志告诉数据转换器如何转换变体
日期为matlab日期。此标志的有效值是mwdateformatnumeric.
(默认)和mwdateformatstring.
.默认的转换变体
根据规则列出的日期支持的变体类型代码万博1manbetx.的mwdateformatstring.
国旗转换变体
日期到它的字符串表示形式。此标志仅影响变体
类型代码VT_DATE
.
这个标志指示数据转换器将输出参数作为日期处理。默认情况下,数值日期是编译后的MATLAB函数的输出参数双
需要由COM日期偏差(693960)递减,并强制为COM日期。将此标志设置为真正的
转换类型的所有输出值双
.
此标志设置执行COM到MATLAB数值日期转换的日期偏差。此属性的默认值是693960,它表示COM之间的差值日期
类型和MATLAB数值数据。该标志允许已经执行数字日期增量693960的现有MATLAB代码不加更改地使用组件。若要使用此类代码处理日期,请将此属性设置为0.
.