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

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

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

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

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

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

  • Вкладки

  • \, $, #, *, ?

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

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

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

  3. На вкладке 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 зарезервированные слова

утверждениеexternsetjmpстрока
'auto'fenvshortstruct ()
пропускfloatsignalswitch
caseдляsignedtgmath
'char'gotosizeofthreads
constifstaticвремя
комплексintstdaligntypedef
продолжениеinttypesstdarguchar
ctypeiso646stdatomicобъединение
defaultlimitsstdboolunsigned
dolocalestddefvoid
'double'longstdintvolatile
elsemathstdiowchar
enumregisterstdlibwctype
errnoвозвратstdnoreturnв то время как

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

algorithmcstddefiostreamsstream
любойcstdintistreamстек
массивcstdioитераторstatic_cast
atomiccstdliblimitsstdexcept
bitsetcstringliststreambuf
cassertctgmathlocalestring_view
catchctimemapstrstream
ccomplexcucharmemorysystem_error
cctypecwcharmemory_resourcetemplate
cerrnocwctypemutablethis
cfenvудалениеmutexthread
cfloatdequenamespaceбросок
chronodynamic_castnewtry
cinttypesисключениечисловойtuple
ciso646executionоператорtypeid
классexplicitoptionaltype_traits
climitsexportostreamtypeindex
clocaleфайловая системаprivatetypeinfo
cmathforeward_listprotectedtypename
codecvtfriendpublicunordered_map
комплексfstreamqueueunordered_set
condition_variablefunctionalrandomusing
const_castfutureratioутилита
csetjmpinitializer_listregexvalarray
csignalвстроенныйreinterpret_castvector
cstdaligniomanipscoped_allocatorvirtual
cstdargiosнаборwchar_t
cstdbooliosfwdshared_mutex 

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

absfortranlocalZCErtNaN
asmHAVESTDIOlocalZCSVSeedFileBuffer
boolid_tmatrixSeedFileBufferLen
boolean_Tint_TMODELединственный
byte_T int8_TMTTID01EQ
char_Tint16_TNCSTATEStime_T
cint8_Tint32_TПустой указательtRUE
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_TlocalPRt USE_RTMODEL
ERTlocalXRT_MALLOC VCAST_FLUSH_DATA
ложьlocalXdisrtInfvector
ЛожьlocalXdotrtMinusInf 

Заменяющие Ключевые слова Библиотеки MATLAB CODER Кода.  Список зарезервированных слов заменяющей библиотеки кода (CRL) для вашей среды разработки отличается, в зависимости от которого в настоящее время указываются CRLs. Вне ANSI® по умолчанию ISO® и GNU® CRLs предоставили программное обеспечение MATLAB Coder, дополнительная сила CRLs быть указанными и доступные для использования, если вы установили другие продукты, которые обеспечивают CRLs (например, целевой продукт), или если вы использовали Встроенный Coder® APIs, чтобы создать и указать пользовательский CRLs.

Чтобы сгенерировать список зарезервированных слов для CRLs, в настоящее время указываемого в вашей среде, используйте следующую функцию MATLAB:

crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()

Эта функция возвращает массив ячеек из символьных векторов, которые содержат ключевые слова CRL. Определение возвращаемого аргумента является дополнительным.

Примечание

Чтобы перечислить CRLs, в настоящее время указываемый в вашей среде, используйте команду MATLAB crviewer.

Чтобы сгенерировать список зарезервированных слов для CRL, который вы используете, чтобы сгенерировать код, вызовите функцию, передающую имя CRL, как отображено в заменяющем меню библиотеки Кода на Генерации кода> Интерфейсная панель диалогового окна 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®.mexa64A.so'none'
(64-битный) Mac.mexmaci64A.dylib'none'
(64-битный) Windows®.mexw64.lib.dll
Кроме того, генерирует библиотеку импорта с расширением .lib, которое требуется для соединения против .dll.
.exe

Была ли эта тема полезной?