В этом разделе описываются правила преобразования данных для MATLAB® Compiler™ компоненты. Эти компоненты являются двумя интерфейсами Microsoft® COM-объекты, поддерживающие типы данных, совместимые с автоматизацией.
Примечание
Automation (ранее называвшаяся OLE Automation) - технология, позволяющая пакетам программного обеспечения открывать свои уникальные функции инструментам скриптирования и другим приложениям. Автоматизация использует Объектную модель программных компонентов (COM), но может быть реализована независимо от других функций OLE, таких как активация на месте.
Когда метод вызывается в компоненте MATLAB Compiler, входные параметры преобразуются во внутренний формат массива MATLAB и передаются в скомпилированную функцию MATLAB. Когда функция выходит, выходные параметры преобразуются из формата внутреннего массива MATLAB в типы COM Automation.
COM-клиент передает все входные и выходные аргументы в скомпилированных функциях MATLAB как тип VARIANT
. COM- VARIANT
type является объединением нескольких простых типов данных. Тип VARIANT
переменная может хранить переменную любого из простых типов, а также массивы любых из этих значений.
Программный интерфейс Win32 (API) обеспечивает множество функций для создания и манипулирования VARIANT
s в C/C + + и Visual Basic® обеспечивает поддержку на родном языке для этого типа.
Примечание
Это обсуждение данных относится к обоим VARIANT
и Variant
типы данных. VARIANT
- имя и Variant
C++ - соответствующий тип данных в Visual Basic.
Смотрите Visual Studio® документация для определений и поддержка API для COM- VARIANT
с. VARIANT
переменные являются самоописывающимися и хранят их код типа как внутреннее поле структуры.
В следующей таблице перечислены VARIANT
коды типов, поддерживаемые компонентами MATLAB Compiler.
Поддерживаемые коды типов VARIANT
VARIANT Код типа(C/C + +) | Тип C/C + + | Variant Код типа(Visual Basic) | Visual BasicType | Определение |
---|---|---|---|---|
VT_EMPTY | — | vbEmpty | — | Неинициализированные |
VT_I1 | char | — | — | Однобайтовый символ со знаком |
VT_UI1 | неподписанные | vbByte | Byte | Беззнаковый однобайтный символ |
VT_I2 | short | vbInteger | Integer | Двухбайтовое целое число со знаком |
VT_UI2 | unsigned short | — | — | Беззнаковое двухбайтовое целое число |
VT_I4 | long | vbLong | Long | Подписанное четырехбайтовое целое число |
VT_UI4 | unsigned long | — | — | Беззнаковое четырехбайтовое целое число |
VT_R4 | float | vbSingle | Single | IEEE® четырехбайтовое значение с плавающей точкой |
VT_R8 | double | vbDouble | Double | Восьмибайтовое значение с плавающей точкой IEEE |
VT_CY | CY + | vbCurrency | Currency | Значение валюты (64-битное целое число, масштабируемое на 10 000) |
VT_BSTR | BSTR + | vbString | String | Строковое значение |
VT_ERROR | SCODE + | vbError | — | Система координат |
VT_DATE | DATE + | vbDate | Date | Восьмибайтное значение с плавающей точкой, представляющее дату и время |
VT_INT | int | — | — | Целое число со знаком; эквивалентно типу |
VT_UINT | unsigned int | — | — | Беззнаковое целое число; эквивалентно типу |
VT_DECIMAL | DECIMAL + | vbDecimal | — | 96-битное (12-байтовое) беззнаковое целое число, масштабируемое на переменную степень 10 |
VT_BOOL | VARIANT_BOOL + | vbBoolean | Boolean | Двухбайтовое логическое значение (0xFFFF = True; 0x0000 = Ложь) |
VT_DISPATCH | IDispatch* | vbObject | Object |
|
VT_VARIANT | VARIANT + | vbVariant | Variant |
|
< все >|VT_ARRAY | — | — | — | Битовое объединение |
< все >|VT_BYREF | — | — | — | Битовое объединение |
+ Обозначает специфичный для Windows тип. Не является частью стандартного C/C + +. |
В следующей таблице перечислены правила преобразования MATLAB в COM.
Правила преобразования MATLAB в COM-варианты
Тип данных MATLAB | VARIANT Тип для скалярных данных | VARIANT Тип для данных массива | Комментарии |
---|---|---|---|
cell | Массив ячеек 1 на 1 преобразуется в одну | Многомерный массив ячеек преобразуется в | |
structure |
|
| A MATLAB |
char | A 1 на 1 | A 1-by-L | Массивы векторов символов не поддерживаются как |
sparse |
|
| Разреженный массив MATLAB преобразуется в |
double | Действительная двойная матрица 1 на 1 преобразуется в | Действительная многомерная двойная матрица преобразуется в | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
single | Действительная одинарная матрица 1 на 1 преобразуется в | Действительная многомерная одинарная матрица преобразуется в | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
int8 | Действительное | Действительное многомерное | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
uint8 | Действительное | Действительное многомерное | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
int16 | Действительное | Действительное многомерное | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
uint16 | Действительное | Действительное многомерное | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
int32 | A 1 на 1 | Многомерное | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
uint32 | A 1 на 1 | Многомерное | Комплексные массивы передаются в скомпилированные функции MATLAB и из них с помощью |
Указатель на функцию |
|
| Не поддерживается |
Java® класс |
|
| Не поддерживается |
Класс пользователя |
|
| Не поддерживается |
логичный |
|
|
В следующей таблице перечислены правила преобразования COM в MATLAB.
COM VARIANT в правила преобразования MATLAB
VARIANT Напечатать | Тип данных MATLAB (скалярные или массивные данные) | Комментарии |
---|---|---|
VT_EMPTY | Не применяется | Создан пустой массив. |
VT_I1 | int8 | |
VT_UI1 | uint8 | |
VT_I2 | int16 | |
VT_UI2 | uint16 | |
VT_I4 | int32 | |
VT_UI4 | uint32 | |
VT_R4 | single | |
VT_R8 | double | |
VT_CY | double | |
VT_BSTR | char | A |
VT_ERROR | int32 | |
VT_DATE | double | 1. |
VT_INT | int32 | |
VT_UINT | uint32 | |
VT_DECIMAL | double | |
VT_BOOL | logical | |
VT_DISPATCH | (изменяется) |
В настоящее время поддержка Excel существует®
|
< все >|VT_BYREF | (изменяется) | Указатели на любой из основных типов обрабатываются согласно правилам для того, на что они указывают. Получившийся массив MATLAB содержит глубокую копию значений. |
< все >|VT_ARRAY | (изменяется) | Многомерные |