主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

複数のエントリポイント関数のためのコード生成

エントリポイント関数は,コードを生成する最上位のMATLAB®関数です。多くのアプリケーションでは,単一のエントリポイント関数のコードのみ生成する必要があります。また,複数のエントリポイント関数からC / c++コードを同時に生成することもできます。複数のエントリポイント関数を使用すると,以下を実行できます。

  • エントリポイント関数ごとに独立したライブラリを生成した場合よりも高いレベルの機能を含む多機能C / c++ライブラリを生成する。

  • 複数のエントリポイント関数が同じサブ関数に依存するときにコードをより効率的に共有するコードを生成する。

  • 同じグローバル変数を使用している場合など,共有メモリを使用して通信できるライブラリ関数を生成する。

C / c++ライブラリを生成する前に,MATLABでエントリポイントの動作を検証する墨西哥人関数を生成することをお勧めします。

複数のエントリポイント関数のためのコードの生成

複数のエントリポイント関数のコードを生成するには,codegenリファレンスページの構文を使用します。既定では,墨西哥人コードの生成の場合,codegenは次を実行します。

  • 現在のフォルダーに墨西哥人関数を生成します。複数のエントリポイント関数を指定するときに、1 つの MEX 関数のみ生成されます。生成された MEX 関数から単一のエントリポイント関数を呼び出すには、墨西哥人関数からの1つのエントリポイント関数の呼び出しを参照してください。

  • 墨西哥関数に的名字_mexという名前をつけます。的名字は,アルファベット順の最初のエントリポイント関数の名前です。

  • 生成されたファイルをサブフォルダーcodegen/mex/子文件夹に保存します。子文件夹は,左から右の順序(codegenコマンドの後に入力されているため)の最初のエントリポイント関数の名前です。

-oオプションを使用して出力ファイル名とサブフォルダー名を指定できます。

codegen-omyOutputFileNamefun1fun2

この場合,codegenmyOutputFileNameという名前の墨西哥人関数を現在のフォルダーに生成し,生成ファイルをサブフォルダーcodegen /墨西哥人/ myOutputFileNameに保存します。

例:2つのエントリポイント関数のコードの生成

2つのエントリポイント関数,ep1ep2の墨西哥人関数を生成します。関数ep1は1つの入力を取り,ep2は2つの入力を取ります。-oオプションを使用して,生成される墨西哥人関数をsharedmexという名前にします。

codegen-omySharedMexep1arg游戏{单(0)}ep2arg游戏{0, 0 (1024)}

codegenmySharedMex.mexという名前の墨西哥人関数を現在のフォルダーに生成し,生成ファイルをサブフォルダーcodegen/mex/mySharedMexに保存します。

スタンドアロンのライブラリコードを生成してコンパイルするには,配置:自由オプションを使用します。

codegen配置:自由-omySharedLibep1arg游戏单(0)ep2arg游戏{0, 0 (1024)}

codegenコマンドによって,C / c++ライブラリコードがcodegen / lib / mySharedLibフォルダーに生成されます。

1つのエントリポイント関数の出力の型を別の関数の入力の型として使用するには,入力としてのエントリポイント関数出力の受け渡しを参照してください。コード生成レポートでエントリポイント関数を確認する方法については、コード生成レポートを参照してください。

墨西哥人関数からの1つのエントリポイント関数の呼び出し

複数のエントリポイント関数fun1fun2などのfunNから生成された墨西哥人関数myMexがあるとします。次の構文を使用して,1つのエントリポイント関数fun_iを呼び出すことができます。

myMex (“fun_i”param1, paramM . .)

ここでは,fun_i用MATLABの関数シグネチャはparamM fun_i (param1 . .)です。

たとえば,エントリポイント関数ep1ep2を含む墨西哥人関数mySharedMexを考えてみます。入力パラメーターuと共にep1を呼び出すには,次のように入力します。

mySharedMex (“ep1”, u)

入力パラメーターvおよびxと共にep2を呼び出すには,次のように入力します。

mySharedMex (“ep2”、v、x)

MATLAB编码员アプリを使用した 1.つを超えるエントリポイント関数のためのコード生成

この例では,MATLAB编码器™アプリを使用して複数のエントリポイント関数のためのコードを生成する方法を示します。

エントリポイント関数の作成

  1. ローカルの書き込み可能なフォルダーで、以下のコードを含む MATLABファイルep1.mを作成します。

    作用y=ep1(u)% # codegeny = u;

  2. 同じローカルの書き込み可能なフォルダーで,以下のコードを含むMATLABファイルep2.mを作成します。

    作用Y = ep2(u, v)% # codegenY = u + v;

テストファイルの作成

ep1.mおよびep2.mが含まれているフォルダーに,サンプル入力と共にep1およびep2を呼び出すMATLABファイルep_test.mを作成します。

作用[y, y1] = ep_test y = ep1(single(2));Y1 = ep2(double(3), double(4)));

MATLAB编码员アプリを開く

MATLABツールストリップの[アプリ]タブの[コード生成)の下で、MATLAB编码器アプリアイコンをクリックします。

ソースファイルの指定

  1. [ソースファイルの選択]ページで,エントリポイント関数の名前ep1を入力または選択します。

    現在のフォルダーに既定の名前ep1.prjをもつプロジェクトが作成されます。コード生成エラーを防ぐためには、プロジェクト ファイルとすべてのエントリポイント MATLAB 関数ファイルを同じフォルダーに保存しなければなりません。

  2. エントリポイント関数のリストにep2を追加するために,[エントリポイント関数の追加)をクリックします。エントリポイント関数の名前ep2を入力または選択します。

  3. (入力の型を定義]ステップに進むには,(次へ]をクリックします。アプリによって関数のコーディングの問題とコード生成の準備状態が解析されます。問題が検出された場合は、[コード生成の準備状態の確認]ページが開くので、ここで問題を確認して修正できます。この例では問題は検出されないので、(入力の型を定義]ページが表示されます。

入力の型の定義

Cでは静的なデータ型が使用されるため,MATLAB编码器は MATLABファイル内のすべての変数のプロパティをコンパイル時に判別しなければなりません。すべてのエントリポイント関数の入力のプロパティを指定しなければなりません。MATLAB编码器は,エントリポイント関数の入力のプロパティからMATLABファイル内のすべての変数のプロパティを推定できます。

MATLAB编码器が自動的に型を定義するために使用するテストファイルを指定します。

  1. テストファイルep_test.mを入力または選択します。

  2. (入力の型の自動定義]をクリックします。

    テストファイルep_test.mは入力型の例と共にエントリポイント関数ep1およびep2を呼び出します。MATLAB编码器ep1の入力u单(1 x1)であることを推定します。ep2については、uおよびv双(1x1)であることを推定します。

  3. (実行時の問題の確認]ステップに進むには,(次へ]をクリックします。

実行時の問題の確認

(実行時の問題の確認]ステップでは,エントリポイント関数からの墨西哥人ファイルの生成,墨西哥人関数の実行および問題の報告が行われます。このステップはオプションです。ただし,このステップを実行することをお勧めします。生成されたCコードでの診断が難しいランタイムエラーを検出して修正することができます。

  1. (実行時の問題の確認]ダイアログボックスを開くために[問題の確認]矢印をクリックします。

    入力の型の定義に使用したテストファイルep_testが、アプリによって [テスト ファイル] フィールドに入力されます。

  2. [問題の確認]をクリックします。

    ep1ep2用のep1_mexという名前の 墨西哥関数が生成されます。ep1およびep2の呼び出しを 墨西哥関数の呼び出しに置き換えてテスト ファイルep_testが実行されます。墨西哥人関数の生成または実行中に問題が検出された場合は、警告およびエラー メッセージが表示されます。問題のあるコードに移動し、問題を修正するには、これらのメッセージをクリックします。この例ではアプリは問題を検出しません。

  3. [コード生成)ステップに進むには,(次へ]をクリックします。

墨西哥関数の生成

  1. [生成]ダイアログボックスを開くために[生成]矢印をクリックします。

  2. [ビルド タイプ](墨西哥人)に設定します。

  3. [出力ファイル名]ep1_mexであることを確認します。既定では,アルファベット順で最初のエントリポイント関数の名前が使用されます。

  4. [生成]をクリックします。

    MATLAB编码器によってプロジェクトがビルドされます。墨西哥人関数ep1_mexが現在のフォルダーに作成されます。また、MATLAB编码器は,codegen /墨西哥人/ ep1_mexというサブフォルダーに他のサポートファイルを生成します。MATLAB编码器は,MATLAB関数の名前を生成するファイルのルート名として使用します。命名規則で説明されているように,墨西哥人ファイル用にプラットフォーム固有の拡張子が作成されます。

    これで,MATLABで墨西哥人関数をテストできます。墨西哥人関数からの1つのエントリポイント関数の呼び出しを参照してください。

    ep1ep2のスタティックライブラリを生成する場合,MATLAB编码器はプロジェクトをビルドし,Cライブラリep1とサポートファイルを既定のフォルダーcodegen / lib / ep1に生成します。

参考

|

関連するトピック