最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

パスとファイル構造の設定

コンパイル パスの検索順序

MATLAB® Coder™ は、まず "コード生成パス"、次に MATLAB パスを検索して、MATLAB 関数の呼び出しを解決します。コード生成パスには、現在のフォルダーとコード生成ライブラリが含まれています。既定では、関数が、MATLAB Coder によって外部関数であると判断されるか、明示的に外部関数として宣言されていない限り、MATLAB Coder はパス上で見つけた関数をコンパイルし、コードを生成しようとします。MATLAB Coder は外部関数をコンパイルせず、MATLAB に実行させるためにディスパッチします。コード生成における関数呼び出しの解決を参照してください。

カスタム コードを検索するフォルダーの指定

カスタム コード (ソース、ヘッダー、ライブラリ ファイルなど) を生成コードと統合するには、追加の検索用フォルダーを指定します。以下の表は、これらの検索パスを指定する方法を示します。パスに以下を含めないでください。

  • スペース (スペースを使用すると、オペレーティング システムの構成によっては、コード生成に失敗する可能性があります)

  • タブ

  • \$#*?

  • 非 7 ビット ASCII 文字 (日本語など)

追加フォルダーを指定する方法手順
MATLAB Coder アプリの使用
  1. [生成] ダイアログ ボックスを開くために、[コード生成] ページの [生成] 矢印 をクリックします。

  2. [詳細設定] をクリックします。

  3. [パス] タブの [検索パス] フィールドで、フォルダーを参照して検索パスに追加するか、絶対パスを入力します。検索パスにはスペースを含めないでください。

コマンド ラインの入力関数 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 ソフトウェアで C++ コードを生成する場合は、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) の予約キーワードのリストは、どの CRL が現在登録されているかによって異なります。MATLAB Coder ソフトウェアで提供されている既定の ANSI®、ISO® および GNU® の各 CRL だけでなく、CRL を提供するその他の製品 (ターゲット製品など) をインストールしているか、Embedded Coder® API を使用してカスタムの CRL を作成および登録したことがある場合は、追加の CRL を登録して使用することができます。

現在お使いの環境に登録されている CRL に対応した予約キーワードのリストを生成するには、次の MATLAB 関数を使用します。

crl_ids = RTW.TargetRegistry.getInstance.getTflReservedIdentifiers()

この関数は、CRL キーワードを含む文字ベクトルの cell 配列を返します。戻り引数の指定はオプションです。

メモ

お使いの環境で現在登録されている CRL をリストするには、MATLAB コマンド crviewer を使用します。

コード生成に使用する CRL の予約キーワードのリストを生成するには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成][インターフェイス] ペインにある [コード置換ライブラリ] メニューに表示される CRL の名前を渡す関数を呼び出します。以下に例を示します。

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'

メモ

返されるキーワードの中には、'rt_atan2$N' のように接尾辞 $N とともに表示されるものがあります。$N は、非有限数がサポートされている場合にのみ接尾辞 _snf に展開されます。たとえば、'rt_atan2$N' は、非有限数がサポートされている場合は 'rt_atan2_snf' になり、非有限数がサポートされていない場合は 'rt_atan2' になります。念のため、両方の形式のキーワードを予約済みとして処理してください。

生成ファイルの命名規則

次の表は、MATLAB Coder による生成ファイルの命名方法を示します。MATLAB Coder は、MEX ファイルにプラットフォーム固有の拡張子を付けることで MATLAB 規則に従います。

プラットフォームMEX ファイルの拡張子MATLAB Coder スタティック ライブラリの拡張子MATLAB Coder 共有ライブラリの拡張子MATLAB Coder 実行可能ファイルの拡張子
Linux® (64 ビット).mexa64.a.soなし
Mac (64 ビット).mexmaci64.a.dylibなし
Windows® (64 ビット).mexw64.lib.dll
また、.dll に対するリンクの作成に必要な、.lib 拡張子をもつインポート ライブラリを生成します。
.exe