Пути и Setup инфраструктуры файла

Скомпилируйте порядок поиска пути

MATLAB® Coder™ разрешает функции MATLAB путем поиска сначала на code generation path и затем на пути MATLAB. Путь генерации кода содержит текущую папку и библиотеки генерации кода. По умолчанию, если MATLAB Coder не решает, что функция должна быть значением внешних параметров, или вы явным образом объявляете, что функция значение внешних параметров, MATLAB Coder пытается скомпилировать и сгенерировать код для функций, которые это ищет на пути. MATLAB Coder не компилирует внешние функции, а скорее отправляет их MATLAB для выполнения. Смотрите Разрешение Вызовов функции для Генерации кода.

Задайте папки, чтобы искать пользовательский код

Если вы хотите интегрировать пользовательский код — такой как источник, заголовок и файлы библиотеки — со сгенерированным кодом, можно задать дополнительную папку, чтобы искать. Следующая таблица описывает, как задать эти пути поиска файлов. Путь не должен содержать:

  • Пробелы (Пробелы могут привести к отказам генерации кода в определенных настройках операционной системы),

  • Вкладки

  • \, $, #, *, ?

  • символы ASCII Non-7-bit, такие как японские символы

Задавать дополнительные папкиСделайте это
Используя приложение MATLAB Coder
  1. Чтобы открыть диалоговое окно Generate, на странице Generate Code, кликают по стреле Generate.

  2. Нажмите More Settings.

  3. На вкладке Paths, в поле Search paths, или обзор, чтобы добавить папку в путь поиска файлов или ввести полный путь. Путь поиска файлов не должен содержать пробелы.

В командной строкеИспользуйте 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 зарезервированные слова

assertexternsetjmpstring
autofenvshortstruct
breakfloatsignalswitch
caseforsignedtgmath
chargotosizeofthreads
constifstatictime
complexintstdaligntypedef
continueinttypesstdarguchar
ctypeiso646stdatomicunion
defaultlimitsstdboolunsigned
dolocalestddefvoid
doublelongstdintvolatile
elsemathstdiowchar
enumregisterstdlibwctype
errnoreturnstdnoreturnwhile

Зарезервированные слова C++

algorithmcstddefiostreamsstream
anycstdintistreamstack
arraycstdioiteratorstatic_cast
atomiccstdliblimitsstdexcept
bitsetcstringliststreambuf
cassertctgmathlocalestring_view
catchctimemapstrstream
ccomplexcucharmemorysystem_error
cctypecwcharmemory_resourcetemplate
cerrnocwctypemutablethis
cfenvdeletemutexthread
cfloatdequenamespacethrow
chronodynamic_castnewtry
cinttypesexceptionnumerictuple
ciso646executionoperatortypeid
classexplicitoptionaltype_traits
climitsexportostreamtypeindex
clocalefilesystemprivatetypeinfo
cmathforeward_listprotectedtypename
codecvtfriendpublicunordered_map
complexfstreamqueueunordered_set
condition_variablefunctionalrandomusing
const_castfutureratioutility
csetjmpinitializer_listregexvalarray
csignalinlinereinterpret_castvector
cstdaligniomanipscoped_allocatorvirtual
cstdargiossetwchar_t
cstdbooliosfwdshared_mutex 

Зарезервированные слова для генерации кода

absfortranlocalZCErtNaN
asmHAVESTDIOlocalZCSVSeedFileBuffer
boolid_tmatrixSeedFileBufferLen
boolean_Tint_TMODELsingle
byte_T int8_TMTTID01EQ
char_Tint16_TNCSTATEStime_T
cint8_Tint32_TNULLtrue
cint16_Tint64_TNUMSTTRUE
cint32_TINTEGER_CODEpointer_Tuint_T
creal_TLINK_DATA_BUFFER_SIZEPROFILING_ENABLED uint8_T
creal32_TLINK_DATA_STREAMPROFILING_NUM_SAMPLESuint16_T
creal64_TlocalBreal_Tuint32_T
cuint8_TlocalCreal32_Tuint64_T
cuint16_TlocalDWorkreal64_TUNUSED_PARAMETER
cuint32_TlocalPRTUSE_RTMODEL
ERTlocalXRT_MALLOC VCAST_FLUSH_DATA
falselocalXdisrtInfvector
FALSElocalXdotrtMinusInf 

Заменяющие Ключевые слова Библиотеки 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