メインコンテンツ

main 関数の例を使用した生成コードの組み込み

生成された C/C++ コードを使用するアプリケーションをビルドする場合、生成されたコードを呼び出す C/C++ main 関数を提供しなければなりません。

既定では、C/C++ ソース コード、スタティック ライブラリ、ダイナミック ライブラリおよび実行可能ファイルのコード生成用に、MATLAB® Coder™ は C/C++ main 関数の例を生成します。この関数は、生成された C/C++ コードのアプリケーションへの組み込みに役立つテンプレートです。main 関数の例は動的に割り当てられたデータなどのデータを宣言して初期化します。これは、エントリポイント関数を呼び出しますが、エントリポイント関数が返す値は使用しません。

MATLAB Coder は、ビルド フォルダーの examples サブフォルダーで main 関数の例に対するソース ファイルとヘッダー ファイルを生成します。C コード生成の場合、ファイル main.cmain.h を生成します。C++ コード生成の場合、ファイル main.cppmain.h を生成します。

ファイル main.cmain.hexamples サブフォルダーで変更しないでください。変更すると、コードの再生成時に MATLAB Coder でメイン ファイルの例が再生成されません。生成されたファイルに対する変更が検出されたことを警告します。main 関数の例を使用する前に、メイン ソース ファイルとヘッダー ファイルの例をビルド フォルダー以外の場所にコピーします。アプリケーションの要件を満たすように新しい場所でファイルを変更します。

packNGo 関数と MATLAB Coder アプリの [エクスポート]、[生成されたコードを ZIP ファイルとしてパッケージ化] ボタンは、既定の構成設定を使用してファイルを生成する際にメイン ソース ファイルとヘッダー ファイルの例をパッケージ化しません。メイン ファイルの例をパッケージ化するには、コード生成を構成し、main 関数の例を生成してコンパイルし、コードを生成してからビルド ファイルをパッケージ化します。

main 関数の例を使用したワークフロー

  1. コード生成用に MATLAB コードを準備します。

  2. 実行時の問題を確認します。

  3. main の例の生成が有効になっていることを確認します。

  4. エントリポイント関数の C/C++ コードを生成します。

  5. メイン ファイルの例を examples サブフォルダーから別のフォルダーへコピーします。

  6. アプリケーションの要件を満たすように新しいフォルダーでメイン ファイルの例を変更します。

  7. 必要なプラットフォームに対して、main の例と生成されたコードを展開します。

  8. アプリケーションをビルドします。

main の例の生成方法と、main の例を使用した実行可能ファイルのビルド方法については、アプリケーションにおける C の main の例の使用を参照してください。

MATLAB Coder アプリを使用した main の例の生成の制御

スタンドアロン コードを生成するようにコード ジェネレーターに指示するには、ツールストリップの [MATLAB Coder] タブで [出力タイプ] をクリックし、[スタティック ライブラリ (.lib)][ダイナミック ライブラリ (.dll)]、または [実行可能ファイル (.exe)] を選択します。

[設定] をクリックして [コード生成設定] ダイアログ ボックスを開きます。次の表は、[main の例の生成] パラメーターの設定方法をコード ジェネレーターの動作ごとに示したものです。

設定コード ジェネレーターの動作
main 関数の例を生成しない C/C++ の main 関数の例を生成しません。
main 関数の例を生成するが、コンパイルしないC/C++ の main 関数の例を生成しますが、コンパイルしません。この動作は既定です。
main 関数の例を生成してコンパイルするC/C++ の main 関数の例を生成してコンパイルします。

コマンド ライン インターフェイスを使用した main の例の生成の制御

スタンドアロン コード構成オブジェクトで GenerateExampleMain プロパティを設定します。次の表は、GenerateExampleMain プロパティの設定方法をコード ジェネレーターの動作ごとに示したものです。

設定コード ジェネレーターの動作
'DoNotGenerate' C/C++ の main 関数の例を生成しません。
'GenerateCodeOnly'C/C++ の main 関数の例を生成しますが、コンパイルしません。この動作は既定です。
'GenerateCodeAndCompile'C/C++ の main 関数の例を生成してコンパイルします。

たとえば、'lib''dll'、または 'exe' 用のコード構成オブジェクトを作成します。次に、C/C++ の main 関数を生成してコンパイルはしないようにコード ジェネレーターに指示します。

cfg.GenerateExampleMain = 'GenerateCodeOnly';
cfg = coder.config('lib'); % or dll or exe

メモ

Windows® では、Generate and compile an example main function を選択するか、cfg.GenerateExampleMainGenerateCodeAndCompile に設定すると、dll および lib コード生成用に、.exe ファイルではなく Windows 実行可能バッチ ファイル (.bat) が現在の作業ディレクトリに生成されます。サンプル フォルダーにある main.c ファイルと main.h ファイルは、アプリケーションの要件に合わせて変更できます。

参考

トピック