Main Content

コード生成における関数呼び出しの解決

MATLAB® 関数から、ローカル関数、サポートされているツールボックス関数およびその他の MATLAB 関数を呼び出すことができます。MATLAB は、コード生成において次にように関数名を解決します。

This image shows the flowchart for how MATLAB resolves function names for code generation.

関数呼び出しの解決のキー ポイント

この図は、MATLAB がコード生成に際して関数呼び出しを解決する方法のキー ポイントを図示したものです。

  • コード生成パスと MATLAB パスの 2 つのパスを検索します。

    コンパイル パスの検索順序を参照してください。

  • コード ジェネレーターがコンパイルすべきでないと判断したり、明示的に外部関数として宣言されていない限り、関数をコンパイルしようとします。

    MATLAB 関数がコード生成でサポートされていない場合、coder.extrinsic コンストラクトの使用の説明に従い、コンストラクト coder.extrinsic を使用して、その関数は外部関数であると宣言できます。シミュレーション中、コード ジェネレーターは外部関数への呼び出しに対してコードを生成しますが、関数の内部コードは生成しません。したがって、シミュレーションを実行できるのは、MATLAB ソフトウェアがインストールされているプラットフォーム上に限定されます。スタンドアロン コードの生成中に、コード ジェネレーターは外部関数が呼び出し元の関数の出力に影響を与えるかどうか判断しようとします。たとえば、出力変数に mxArrays を返すことによって、これを実行します。出力に変化がない場合、コード生成は続行されますが、外部関数は生成されたコードから除外されます。それ以外の場合はコンパイル エラーが発生します。

    コード ジェネレーターでは plotdispfigure などの多くの一般的な可視化関数の呼び出しを検出します。このような関数は外部関数と同様に扱われますが、関数 coder.extrinsic を使用してそれらの関数を外部宣言する必要はありません。

  • コード生成パスでのファイル タイプの解決で説明されている実行の優先順位に基づいてファイル タイプを解決

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

コード生成中、関数呼び出しは次の 2 つのパスで解決されます。

  1. コード生成パス

    MATLAB は、コード生成時にまずこちらのパスを検索します。コード生成パスには、コード生成でサポートされているツールボックス関数が含まれています。

  2. MATLAB パス

    関数がコード生成パス上にない場合、MATLAB はこのパスを検索します。

MATLAB は、各パスの検索時に同じディスパッチャー ルールを適用します (関数の優先順位を参照してください)。

コード生成パスを使用する場合

コード生成パスを使用して、カスタマイズしたバージョンで MATLAB 関数をオーバーライドすることができます。コード生成パス上にあるファイルは、MATLAB パス上にある同じ名前のファイルよりも優先されます。

コード生成パスに追加のフォルダーを追加する方法の詳細については、パスとファイル構造の設定 (MATLAB Coder)を参照してください。