Вызов внешней функции 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
что целевая функция находится на устройстве GPU. 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.
Если свойство имеет метод get, метод set, или validators, или является свойством System 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.ExternalDependency
| coder.extrinsic
| coder.opaque
| coder.ref
| coder.rref
| coder.target
| coder.updateBuildInfo
| coder.wref
| coder.reservedName
(MATLAB CODER)