Main Content

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

C++ mwArray API 共有ライブラリの生成と C++ アプリケーションのビルド

サポートされるプラットフォーム: Windows®、Linux®Mac

この例では、MATLAB® 関数から C++ 共有ライブラリを作成する方法を説明します。生成されたライブラリは、C++ アプリケーションに統合できます。また、この例では、C++ アプリケーションから C++ 共有ライブラリを呼び出す方法も示します。MATLAB のライセンス コピーがターゲット システムにインストールされている必要はありません。

MATLAB での関数の作成

MATLAB で、パッケージ化する MATLAB コードを調べます。この例では、matlabroot\extern\examples\compilersdk\c_cpp\matrix にある addmatrix.m を開きます。

 addmatrix.m

MATLAB コマンド プロンプトに以下を入力します。

addmatrix([1 4 7; 2 5 8; 3 6 9], [1 4 7; 2 5 8; 3 6 9])

出力は以下のようになります。

 ans =
     2     8    14
     4    10    16
     6    12    18

ライブラリ コンパイラ アプリを使用した C++ 共有ライブラリの作成

  1. [MATLAB アプリ] タブで、[アプリ] セクションの右端にある矢印をクリックします。[アプリケーション配布] で、[ライブラリ コンパイラ] をクリックします。

    または、MATLAB コマンド プロンプトで以下を入力して、[ライブラリ コンパイラ] アプリを開きます。

    libraryCompiler

  2. ツールストリップの [タイプ] セクションで、[C++ 共有ライブラリ] をクリックします。

    ライブラリ コンパイラ アプリのプロジェクト ウィンドウで、配布する MATLAB アプリケーションのファイルを指定します。

    1. ツールストリップの [エクスポートする関数] セクションで、 をクリックします。

    2. [ファイルの追加] ウィンドウで、サンプルのフォルダーを参照し、パッケージ化する関数を選択します。[開く] をクリックします。

    エクスポートする関数ファイルのリストに関数が追加されます。同じアプリケーションに複数のファイルをパッケージ化するには、この手順を繰り返します。

    この例では、matlabroot\extern\examples\compilersdk\c_cpp\matrix に移動して addmatrix.m を選択します。

  3. ツールストリップの [パッケージ化オプション] セクションで次のオプションのいずれかを選択して、生成されるアプリケーションに MATLAB Runtime インストーラーを含めるかどうかを決定します。

    • ランタイムを Web からダウンロードMATLAB Runtime をダウンロードして配布された MATLAB アプリケーションと共にインストールするインストーラーを生成します。インストーラーのファイル名を指定できます。

    • ランタイムをパッケージに含めるMATLAB Runtime インストーラーを含むアプリケーションを生成します。インストーラーのファイル名を指定できます。

      メモ

      このオプションを初めて選択したときに、MATLAB Runtime インストーラーをダウンロードするように求めるメッセージが表示されます。

共有ライブラリ設定の指定

  1. [ライブラリ名] フィールドに、パッケージ化された共有ライブラリの名前として addmatrix が自動的に入力されます。この名前を libmatrix に変更します。同じ名前が、共有ライブラリの実装時にも使用されます。

  2. サンプル C++ ドライバー ファイルを生成するための MATLAB ファイルを追加します。C++ ドライバー ファイルは共有ライブラリの作成に必須ではありませんが、C++ mwArray API 共有ライブラリをドライバー アプリケーションとともに実装の方法を示すために使用します。

    [サンプル] セクションで、[新規サンプルの作成] を選択して addmatrix.m をクリックします。MATLAB ファイルが編集用に開きます。アプリケーションの必要に応じて入力変数を定義し、ファイルを保存して [ライブラリ コンパイラ] アプリに戻ります。詳細と制限については、サンプル ドライバー ファイルの作成を参照してください。

  3. 生成される C++ 共有ライブラリの API の種類を選択します。下部の [API の選択] セクションで、[mwArray API を使用するインターフェイスの作成] を選択します。詳細については、C++ 共有ライブラリの API の選択を参照してください。

アプリケーションとその外観のカスタマイズ

次のように、インストーラーのカスタマイズ、アプリケーションのカスタマイズ、アプリケーションに関する情報の追加を実行できます。

  • ライブラリ情報 — 配布されるアプリケーションに関する情報。また、アプリケーション アイコンとスプラッシュ スクリーンを変更して、アプリケーションの外観をカスタマイズすることもできます。生成されるインストーラーはこの情報を使用して、インストールされるアプリケーションのメタデータを入力します。インストーラーのカスタマイズを参照してください。

  • 追加インストーラー オプション — 生成されるインストーラーの既定のインストール パスと、カスタム ロゴの選択。インストール パスの変更を参照してください。

  • ライブラリの実行に必要なファイル — 生成されるアプリケーションを実行するために必要な追加ファイル。これらのファイルは、生成されるアプリケーション インストーラーに含められます。コンパイラ プロジェクトの必須ファイルの管理を参照してください。

  • エンド ユーザー用にインストールされるファイル — アプリケーションと共にインストールされるファイル。

    アプリケーションと共にインストールするファイルの指定を参照してください。

アプリケーションのパッケージ化

  1. パッケージ化されたアプリケーションを生成するには、[パッケージ化] をクリックします。

    [プロジェクトを保存] ダイアログ ボックスで、プロジェクトを保存する場所を指定します。

  2. [パッケージ] ダイアログ ボックスで、[プロセスが完了したら出力フォルダーを開く] が選択されていることを確認します。

    パッケージ化プロセスが完了したら、生成された出力を調べます。

    • ターゲット フォルダーの場所に for_redistributionfor_redistribution_files_onlyfor_testing の 3 つのフォルダーが生成されます。

      これらのフォルダーに生成されるファイルの詳細については、MATLAB 関数のパッケージ化後に生成されるファイルを参照してください。

    • PackagingLog.txtMATLAB Compiler™ により生成されたログ ファイル。

compiler.build.cppSharedLibrary を使用した C++ 共有ライブラリの作成

メモ

ライブラリ コンパイラ アプリを使用してスタンドアロン アプリケーションが既に作成されている場合は、この節を省略できます。一方、プログラムによる方法で MATLAB コマンド ウィンドウから C++ 共有ライブラリを作成する方法を確認する場合は、以下の手順に従ってください。

  1. matlabroot\extern\examples\compilersdk\c_cpp\matrix にある addmatrix.m ファイルへのパスを保存します。

    appFile = fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix','addmatrix.m');
  2. 以下のコードを addmatrixSample1.m という名前のサンプル ファイルに保存します。

    a1 = [1 4 7; 2 5 8; 3 6 9];
    a2 = a1;
    a = addmatrix(a1, a2);

  3. 関数 compiler.build.cppSharedLibrary を使用して C++ 共有ライブラリをビルドします。名前と値の引数を使用してサンプル ファイルを追加し、ライブラリ名とインターフェイス API を指定します。

    buildResults = compiler.build.cppSharedLibrary(appFile,...
    'LibraryName','libmatrix',...
    'Interface','mwarray',...
    'SampleGenerationFiles','addmatrixSample1.m');

    compiler.build.Results オブジェクト buildResults に、ビルド タイプ、生成されたファイル、ビルド オプションに関する情報が格納されます。

  4. この構文により、現在の作業ディレクトリの libmatrixcppSharedLibrary という名前のフォルダーに以下が生成されます。

    • samples\addmatrixSample1_mwarray.cpp — C++ サンプル ドライバー ファイル。

    • GettingStarted.html — 共有ライブラリの統合に関する情報が含まれる HTML ファイル。

    • libmatrix.cpp — C++ ソース コード ファイル。

    • libmatrix.def — リンカーにモジュール情報を提供するモジュール定義ファイル。

    • libmatrix.dll — ダイナミックリンク ライブラリ ファイル。

    • libmatrix.exports — すべての非静的関数名が含まれるエクスポート ファイル。

    • libmatrix.h — C++ ヘッダー ファイル。

    • libmatrix.lib — インポート ライブラリ ファイル。

    • mccExcludedFiles.log — アプリケーションに含まれていないすべてのツールボックス関数のリストが含まれるログ ファイル。サポートされていない関数の詳細については、MATLAB Compiler の制限を参照してください。

    • readme.txt — パッケージ化情報が含まれるテキスト ファイル。

    • requiredMCRProducts.txtMATLAB Runtime がアプリケーションを実行するために必要な製品の製品 ID が含まれるテキスト ファイル。

    • unresolvedSymbols.txt — 未解決のシンボルに関する情報が含まれるテキスト ファイル。

    メモ

    生成されたライブラリに MATLAB Runtime やインストーラーは含まれていません。

  5. compiler.build コマンドでは、以下の名前と値の引数を 1 つ以上使用することによって、追加オプションを指定できます。

    • 'AdditionalFiles' — 共有ライブラリに含める追加ファイルへのパス。

    • 'AutoDetectDataFiles' — データ ファイルを自動的に含めるためのフラグ。

    • 'DebugBuild' — デバッグ シンボルを有効にするためのフラグ。

    • 'Interface' — インターフェイス API。'matlab-data' (既定値) または 'mwarray' として指定します。詳細については、C++ 共有ライブラリの API の選択を参照してください。

    • 'LibraryName' — 生成されたライブラリの名前。

    • 'OutputDir' — 生成されたファイルを含む出力ディレクトリへのパス。

    • 'SampleGenerationFiles' — サンプル C++ ライブラリ ファイルの生成に使用される MATLAB サンプル ファイル。詳細については、サンプル ドライバー ファイルの作成を参照してください。

    • 'Verbose' — ビルド プロセス中にコンパイラ出力を示す進行状況の情報を表示するためのフラグ。

C++ mwArray API 共有ライブラリをドライバー アプリケーションとともに実装

C++ 共有ライブラリのパッケージ化が完了したら、C++ アプリケーションから呼び出すことができます。作成する C++ アプリケーションでは、パッケージ化の際に生成されたサンプル C++ ドライバー コードを使用します。この C++ ドライバー コードは C++ 共有ライブラリを呼び出し、以前のセットアップ手順で選択したサンプル MATLAB ファイルを基にしています。

これらの手順は、for_redistribution_files_only フォルダーの GettingStarted.html ファイルでも説明しています。開始する前に、MATLAB Runtime のインストールと構成が完了していて、C++ コンパイラがインストールされていることを確認してください。

  1. 生成された C++ ドライバー コード ファイルを for_redistribution_files_only\samples フォルダーからコピーして、共有ライブラリの作成時に作成された for_redistribution_files_only フォルダーに貼り付けます。

  2. システムのコマンド ラインを使用して、生成されたサンプル C++ ドライバー コード ファイルをコピーした for_redistribution_files_only フォルダーに移動します。

  3. システムのコマンド プロンプトで mbuild を使用して、アプリケーションをコンパイルしてリンクします。

    mbuild addmatrix_sample.cpp libmatrix.lib
  4. システムのコマンド プロンプトからアプリケーションを実行します。パッケージ化手順で MATLAB サンプル コードを使用した場合、このアプリケーションは MATLAB コードと同じ出力を返すはずです。

    addmatrix_sample.exe
    2 8 14
    4 10 16
    6 12 18
    

参考

| |

関連するトピック