Вызовите внешнюю функцию C/C++
coder.ceval(
выполняет внешнюю функцию C/C++, заданную cfun_name
)cfun_name
. Задайте cfun_name
во внешнем исходном файле C/C++ или библиотеке. Обеспечьте внешний источник, библиотеку и заголовочные файлы к генератору кода.
coder.ceval(
выполняет cfun_name
,cfun_arguments
)cfun_name
с аргументами cfun_arguments
. cfun_arguments
список, разделенный запятыми входных параметров в порядке что cfun_name
требует.
По умолчанию, coder.ceval
аргументы передач значением на C/C++ функционируют каждый раз, когда поддержки C/C++ передающие аргументы значением. Сделать coder.ceval
передайте аргументы ссылкой, используйте построения coder.ref
, coder.rref
, и coder.wref
. Если C/C++ не поддерживает передающие аргументы значением, например, если аргумент является массивом, coder.ceval
аргументы передач ссылкой. Если вы не используете coder.ref
, coder.rref
или coder.wref
, копия аргумента, может казаться, в сгенерированном коде осуществляет MATLAB® семантика для массивов.
coder.ceval(
выполняет '-global'
,cfun_name
)cfun_name
и указывает на тот cfun_name
использование одна или несколько глобальных переменных MATLAB. Генератор кода может затем произвести код, который сопоставим с этим использованием глобальной переменной.
coder.ceval(
выполняет '-global'
,cfun_name
,cfun_arguments
)cfun_name
с аргументами cfun_arguments
и указывает на тот cfun_name
использование одна или несколько глобальных переменных MATLAB.
coder.ceval(
позволяет вам вызывать CUDA® ГРАФИЧЕСКИЙ ПРОЦЕССОР '-gpudevicefcn'
,devicefun_name,devicefun_arguments)__device__
функции из ядер. '-gpudevicefcn'
указывает к coder.ceval
то, что целевая функция находится на устройстве графического процессора. devicefun_name
имя __device__
функция и devicefun_arguments
список, разделенный запятыми входных параметров в порядке что devicefun_name
требует. Эта опция требует продукта GPU Coder™.
coder.ceval(
выполняет '-layout:rowMajor'
,cfun_name
,cfun_arguments
)cfun_name
с аргументами cfun_arguments
и данные о передачах хранимы в упорядоченном по строкам размещении. Когда названо от функции, которая использует упорядоченное по столбцам размещение, генератор кода преобразует входные параметры в упорядоченное по строкам размещение и преобразует выходные параметры назад в упорядоченное по столбцам размещение. Для более короткого синтаксиса используйте coder.ceval('-row',...)
.
coder.ceval(
выполняет '-layout:columnMajor'
,cfun_name
,cfun_arguments
)cfun_name
с аргументами cfun_arguments
и данные о передачах хранимы в упорядоченном по столбцам размещении. Когда названо от функции, которая использует упорядоченное по строкам размещение, генератор кода преобразует входные параметры в упорядоченное по столбцам размещение и преобразует выходные параметры назад в упорядоченное по строкам размещение. Для более короткого синтаксиса используйте coder.ceval('-col',...)
.
coder.ceval(
выполняет '-layout:any'
,cfun_name
,cfun_arguments
)cfun_name
с аргументами cfun_arguments
и данные о передачах с его размещением современного массива, даже когда размещения массивов не соответствуют. Генератор кода не преобразует размещение массивов данных о вводе или выводе.
cfun_return = coder.ceval(___)
выполняет cfun_name
и возвращает одно скалярное значение, cfun_return
, соответствие значению, которое функция C/C++ возвращает в return
оператор. Быть сопоставимым с C/C++, coder.ceval
может возвратить только скалярное значение. Это не может возвратить массив. Используйте эту опцию с любыми комбинациями входных аргументов в предыдущих синтаксисах.
Вы не можете использовать coder.ceval
на функциях, с которыми вы объявляете значение внешних параметров coder.extrinsic
.
Когда компилятор LCC создает библиотеку, он добавляет начальный символ подчеркивания в имена библиотечной функции. Если бы компилятор для библиотеки был LCC, и ваш компилятор генерации кода не является LCC, необходимо добавить начальный символ подчеркивания в имя функции, например, coder.ceval('_mylibfun')
. Если компилятор для библиотеки не был LCC, вы не можете использовать LCC, чтобы сгенерировать код из кода MATLAB, который вызывает функции от той библиотеки. Те имена библиотечной функции не имеют начального символа подчеркивания, которого требует компилятор LCC.
Если свойство имеет получить метод, метод установки или блоки проверки допустимости, или является Системой object™ свойство с определенными атрибутами, то вы не можете передать свойство в отношении внешней функции. Смотрите Передачу Ссылкой, Не Поддержанной для Некоторых Свойств.
Для генерации кода, перед вызовом coder.ceval
, необходимо задать тип, размер и тип данных сложности возвращаемых значений и выходных аргументов.
Применяться coder.ceval
к функции, которая принимает или возвращает переменные, которые не существуют в коде MATLAB, таком как указатели, FILE
типы для файлового ввода-вывода и макросы C/C++, используют coder.opaque
функция.
Использование coder.ceval
только в MATLAB для генерации кода. coder.ceval
генерирует ошибку в нескомпилированном коде MATLAB. Чтобы определить, выполняется ли функция MATLAB в MATLAB, использовать coder.target
. Если функция выполняется в MATLAB, вызовите версию MATLAB функции C/C++.
Внешний код, названный при помощи coder.ceval
и сгенерированный код, запущенный в рамках того же процесса и памяти доли. Если внешний код ошибочно пишет в память, которая содержит структуры данных, используемые сгенерированным кодом, это может заставить процесс неожиданно вести себя или отказывать. Например, если внешний код пытается записать данные к массиву после того, как его конечная точка, процесс сможет неожиданно вести себя или катастрофический отказ.
coder.ref
| coder.rref
| coder.wref
| coder.target
| codegen
| coder.extrinsic
| coder.opaque
| coder.columnMajor
| coder.rowMajor
| coder.updateBuildInfo
| coder.ExternalDependency
| coder.reservedName