Эта тема описывает правила преобразования данных для компонентов MATLAB® Compiler™. Этими компонентами являются двойные интерфейсные COM-объекты Microsoft®, которые поддерживают типы данных, совместимые с Автоматизацией.
Automation (раньше названная Автоматизация OLE) является технологией, которая позволяет пакетам программного обеспечения представлять свои уникальные функции сценариям инструментов и других приложений. Автоматизация использует Объектную модель программных компонентов (COM), но может быть реализована независимо от других функций OLE, таких как активизация "на месте".
Когда метод вызывается на компонент MATLAB Compiler, входные параметры преобразованы в формат внутреннего массива MATLAB и переданы скомпилированной функции MATLAB. Когда функция выходит, выходные параметры преобразованы от формата внутреннего массива MATLAB до типов Автоматизации COM.
COM-клиент передает все аргументы ввода и вывода в скомпилированных функциях MATLAB как тип VARIANT
. Тип VARIANT
COM является объединением нескольких простых типов данных. Переменная VARIANT
типа может сохранить переменную любого из простых типов, а также массивов любого из этих значений.
Прикладной программный интерфейс (API) Win32 обеспечивает много функций для создания и управления VARIANT
s на C/C++, и Визуальный Basic® оказывает поддержку родного языка для этого типа.
Это обсуждение данных относится к VARIANT
и к типам данных Variant
. VARIANT
является именем C++, и Variant
является соответствующим типом данных в Visual Basic.
См. Визуальную документацию Studio® для определений и поддержку API VARIANT
COM s. переменные VARIANT
являются сам описание и хранят свой код типа как внутреннее поле структуры.
В следующей таблице перечислены коды типа VARIANT
, поддержанные компонентами MATLAB Compiler.
Поддерживаемые коды типа VARIANT
Код типа VARIANT (C/C++) | Тип C/C++ | Код типа Variant (Visual Basic) | Визуальный BasicType | Определение |
---|---|---|---|---|
VT_EMPTY | — | vbEmpty | — | Неинициализированный |
VT_I1 | char | — | — | Однобайтовый символ со знаком |
VT_UI1 |
| vbByte | Byte | Однобайтовый символ без знака |
VT_I2 | short | vbInteger | Integer | Целое число 2D байта со знаком |
VT_UI2 | unsigned short | — | — | Целое число 2D байта без знака |
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 | Булево значение 2D байта (0xFFFF = Верный; 0x0000 = Ложь) |
VT_DISPATCH | IDispatch* | vbObject | Object | Указатель |
VT_VARIANT | VARIANT + | vbVariant | Variant |
|
<anything>|VT_ARRAY | — | — | — | Поразрядно объедините |
<anything>|VT_BYREF | — | — | — | Поразрядно объедините |
+ Обозначает специфичный для Windows тип. Не часть стандартного C/C++. |
В следующей таблице перечислены правила для преобразования от MATLAB до COM.
MATLAB к правилам преобразования COM VARIANT
Тип данных MATLAB | Тип VARIANT для скалярных данных | Тип VARIANT для данных массива | Комментарии |
---|---|---|---|
cell | Массив ячеек 1 на 1 преобразовывает в один | Многомерный массив ячеек преобразовывает в | |
structure |
|
| Массив |
char | Матрица | 1 L матрицей | Массивы векторов символов не поддержаны как матрицы |
sparse |
|
| Разреженный массив MATLAB преобразован в объект |
double | Действительная двойная матрица 1 на 1 преобразовывает в | Действительная многомерная двойная матрица преобразовывает в | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
single | Действительная одна матрица 1 на 1 преобразовывает в | Действительная многомерная одна матрица преобразовывает в | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
int8 | Действительная матрица | Действительная многомерная матрица | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
uint8 | Действительная матрица | Действительная многомерная матрица | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
int16 | Действительная матрица | Действительная многомерная матрица | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
uint16 | Действительная матрица | Действительная многомерная матрица | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
int32 | Матрица | Многомерная матрица | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
uint32 | Матрица | Многомерная матрица | Комплексные массивы передаются и от скомпилированных функций MATLAB с помощью класса |
Указатель на функцию |
|
| Не поддерживаемый |
Класс Java® |
|
| Не поддерживаемый |
Пользовательский класс |
|
| Не поддерживаемый |
логический |
|
|
В следующей таблице перечислены правила для преобразования от COM до MATLAB.
ВАРИАНТ COM к правилам преобразования 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 |
|
VT_ERROR | int32 | |
VT_DATE | double | 1. даты |
VT_INT | int32 | |
VT_UINT | uint32 | |
VT_DECIMAL | double | |
VT_BOOL | logical | |
VT_DISPATCH | (отличается) | Указатели В настоящее время поддержка существует для объектов Excel® |
<anything>|VT_BYREF | (отличается) | Указатели на любой из основных типов обрабатываются согласно правилам для того, на что они указывают. Получившийся массив MATLAB содержит глубокую копию значений. |
<anything>|VT_ARRAY | (отличается) | Многомерные массивы |