MATLAB® Coder™ разрешает функции MATLAB путем поиска сначала на code generation path и затем на пути MATLAB. Путь генерации кода содержит текущую папку и библиотеки генерации кода. По умолчанию, если MATLAB Coder не решает, что функция должна быть внешней, или вы явным образом объявляете, что функция является внешней, MATLAB Coder пытается скомпилировать и сгенерировать код для функций, которые это ищет на пути. MATLAB Coder не компилирует внешние функции, а скорее отправляет их MATLAB для выполнения. Смотрите Разрешение Вызовов функции для Генерации кода.
Если вы хотите интегрировать пользовательский код — такой как источник, заголовок и файлы библиотеки — со сгенерированным кодом, можно задать дополнительную папку, чтобы искать. Следующая таблица описывает, как задать эти пути поиска файлов. Путь не должен содержать:
Пробелы (Пробелы могут привести к отказам генерации кода в определенных настройках операционной системы),
Вкладки
\
, $
, #
, *
, ?
символы ASCII Non-7-bit, такие как японские символы
Задавать дополнительные папки | Сделайте это |
---|---|
Используя приложение MATLAB Coder |
|
В командной строке | Используйте функцию codegen опция -I . |
MATLAB Coder осуществляет соглашения о присвоении имен для функций MATLAB и сгенерированных файлов.
MATLAB Coder резервирует префиксный eml
для глобальных функций C/C++ и переменных в сгенерированном коде. Например, MATLAB для имен функций библиотеки времени выполнения генерации кода начинаются с префиксного emlrt
, такого как emlrtCallMATLAB
. Чтобы избежать конфликтов по совпадению имен, не называйте функции C/C++ или первичные функции MATLAB с префиксным eml
.
Программное обеспечение MATLAB Coder резервирует определенные слова для своего собственного использования в качестве ключевых слов языка сгенерированного кода. Ключевые слова MATLAB Coder резервируются для использования, внутреннего к программному обеспечению MATLAB Coder, и не должны использоваться в коде MATLAB в качестве идентификаторов или имен функций. C зарезервированные слова не должен также использоваться в коде MATLAB в качестве идентификаторов или имен функций. Если ваш код MATLAB содержит зарезервированные слова, которые не может переименовать генератор кода, сборка генерации кода не завершается, и сообщение об ошибке отображено. Чтобы исправить эту ошибку, измените свой код, чтобы использовать идентификаторы или имена, которые не резервируются.
Если вы генерируете Код С++ с помощью программного обеспечения MATLAB Coder, кроме того, код MATLAB не должен содержать Зарезервированные слова C++.
C зарезервированные слова
assert | extern | setjmp | string |
auto | fenv | short | struct |
break | float | signal | switch |
case | for | signed | tgmath |
char | goto | sizeof | threads |
const | if | static | time |
complex | int | stdalign | typedef |
continue | inttypes | stdarg | uchar |
ctype | iso646 | stdatomic | union |
default | limits | stdbool | unsigned |
do | locale | stddef | void |
double | long | stdint | volatile |
else | math | stdio | wchar |
enum | register | stdlib | wctype |
errno | return | stdnoreturn | while |
Зарезервированные слова C++
algorithm | cstddef | iostream | sstream |
any | cstdint | istream | stack |
array | cstdio | iterator | static_cast |
atomic | cstdlib | limits | stdexcept |
bitset | cstring | list | streambuf |
cassert | ctgmath | locale | string_view |
catch | ctime | map | strstream |
ccomplex | cuchar | memory | system_error |
cctype | cwchar | memory_resource | template |
cerrno | cwctype | mutable | this |
cfenv | delete | mutex | thread |
cfloat | deque | namespace | throw |
chrono | dynamic_cast | new | try |
cinttypes | exception | numeric | tuple |
ciso646 | execution | operator | typeid |
class | explicit | optional | type_traits |
climits | export | ostream | typeindex |
clocale | filesystem | private | typeinfo |
cmath | foreward_list | protected | typename |
codecvt | friend | public | unordered_map |
complex | fstream | queue | unordered_set |
condition_variable | functional | random | using |
const_cast | future | ratio | utility |
csetjmp | initializer_list | regex | valarray |
csignal | inline | reinterpret_cast | vector |
cstdalign | iomanip | scoped_allocator | virtual |
cstdarg | ios | set | wchar_t |
cstdbool | iosfwd | shared_mutex |
Зарезервированные слова для генерации кода
abs | fortran | localZCE | rtNaN |
asm | HAVESTDIO | localZCSV | SeedFileBuffer |
bool | id_t | matrix | SeedFileBufferLen |
boolean_T | int_T | MODEL | single |
byte_T |
int8_T | MT | TID01EQ
|
char_T | int16_T | NCSTATES | time_T |
cint8_T | int32_T | NULL | true |
cint16_T | int64_T | NUMST | TRUE |
cint32_T | INTEGER_CODE | pointer_T | uint_T |
creal_T | LINK_DATA_BUFFER_SIZE | PROFILING_ENABLED
| uint8_T |
creal32_T | LINK_DATA_STREAM | PROFILING_NUM_SAMPLES | uint16_T |
creal64_T | localB | real_T | uint32_T |
cuint8_T | localC | real32_T | uint64_T |
cuint16_T | localDWork | real64_T | UNUSED_PARAMETER |
cuint32_T | localP | RT | USE_RTMODEL
|
ERT | localX | RT_MALLOC
| VCAST_FLUSH_DATA |
false | localXdis | rtInf | vector |
FALSE | localXdot | rtMinusInf |
Заменяющие Ключевые слова Библиотеки MATLAB Coder Кода. Список зарезервированных слов заменяющей библиотеки кода (CRL) для вашей среды разработки отличается, в зависимости от которого в настоящее время указаны CRLs. Вне ANSI® по умолчанию ISO® и GNU® CRLs предоставили программное обеспечение MATLAB Coder, дополнительная сила CRLs быть указанными и доступные для использования, если вы установили другие продукты, которые обеспечивают CRLs (например, целевой продукт), или если вы использовали Embedded Coder® APIs, чтобы создать и указать пользовательский CRLs.
Чтобы сгенерировать список зарезервированных слов для CRLs, в настоящее время указанного в вашей среде, используйте следующую функцию MATLAB:
crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()
Эта функция возвращает массив ячеек из символьных векторов, которые содержат ключевые слова CRL. Определение возвращаемого аргумента является дополнительным.
Чтобы перечислить CRLs, в настоящее время указанный в вашей среде, используйте команду MATLAB crviewer
.
Чтобы сгенерировать список зарезервированных слов для CRL, который вы используете, чтобы сгенерировать код, вызовите функцию, передающую имя CRL, как отображено в меню Code replacement library на Code Generation> панель Interface диалогового окна Configuration Parameters. Например,
crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers('GNU99 (GNU)')
Вот частичный пример функционального вывода:
>> crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers('GNU99 (GNU)') crl_ids = 'exp10' 'exp10f' 'acosf' 'acoshf' 'asinf' 'asinhf' 'atanf' 'atanhf' ... 'rt_lu_cplx' 'rt_lu_cplx_sgl' 'rt_lu_real' 'rt_lu_real_sgl' 'rt_mod_boolean' 'rt_rem_boolean' 'strcpy' 'utAssert'
Некоторые возвращенные ключевые слова появляются с суффиксным $N
, например, 'rt_atan2$N'
. $N
расширяется в суффиксный _snf
, только если поддерживаются неличные числа. Например, 'rt_atan2$N'
представляет 'rt_atan2_snf'
, если неличные числа поддерживаются и 'rt_atan2'
, если неличные числа не поддержаны. Предусмотрительно, необходимо обработать обе формы ключевого слова, как зарезервировано.
Следующая таблица описывает, как MATLAB Coder называет сгенерированные файлы. MATLAB Coder следует соглашениям MATLAB путем обеспечения специфичных для платформы расширений для файлов MEX.
Платформа | Расширение файла MEX | Расширение MATLAB Coder для статической библиотеки | Расширение MATLAB Coder для разделяемой библиотеки | Исполнимое расширение MATLAB Coder |
---|---|---|---|---|
(64-битный) Linux® | .mexa64 | .a | .so | 'none' |
(64-битный) Mac | .mexmaci64 | .a | .dylib | 'none' |
(64-битный) Windows® | .mexw64 | .lib | .dll
Кроме того, генерирует библиотеку импорта с расширением .lib , которое требуется для соединения против .dll . | .exe |