Main Content

.NET アセンブリの生成と .NET アプリケーションのビルド

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

この例では、MATLAB® 関数から .NET アセンブリを作成し、生成されたアセンブリを .NET アプリケーションに統合する方法を説明します。

前提条件

  • MATLAB Compiler SDK™ の .NET ターゲット要件をすべて満たしていることを確認します。詳細については、MATLAB Compiler SDK の .NET ターゲットの要件を参照してください。

  • Microsoft® Visual Studio® がインストールされていることを確認します。

  • アプリケーションの実行には、エンド ユーザーによる MATLAB Runtime のインストールが必要です。詳細については、MATLAB Runtime のインストールと構成を参照してください。

    テスト目的で、MATLAB Runtime の代わりに MATLAB のインストールを使用することができます。

MATLAB での関数の作成

MATLAB で、パッケージ化対象の MATLAB コードを調べます。この例では、makesquare.m という名前の MATLAB スクリプトを作成します。

function y = makesquare(x)
y = magic(x);

MATLAB コマンド プロンプトで、makesquare(5) と入力します。

出力は 5 行 5 列の行列になります。

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

ライブラリ コンパイラ アプリを使用した .NET アセンブリの作成

ライブラリ コンパイラ アプリを使用して、関数を .NET アセンブリにパッケージ化します。あるいは、プログラムによる方法で MATLAB コマンド ウィンドウから .NET アセンブリを作成する場合は、compiler.build.dotNETAssembly を使用した .NET アセンブリの作成を参照してください。

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

    または、MATLAB コマンド プロンプトから [ライブラリ コンパイラ] アプリを開くことができます。

    libraryCompiler

    Library Compiler App with the .NET Assembly type selected

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

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

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

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

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

    この例では、makesquare.m ファイルを選択します。

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

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

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

      メモ

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

アセンブリ ファイル設定の指定

次に、アセンブリの名前を定義し、アプリケーションにビルドする .m ファイルのクラス マッピングを確認します。

  1. [ライブラリ名] フィールドに、アセンブリの名前として makesquare が自動的に入力されます。この名前を MagicSquareComp に変更します。同じ名前が、アセンブリの実装時にも使用されます。

    [ライブラリ名] フィールドは空白または特殊文字をサポートしません。

  2. makesquare.m で定義された関数が MagicSquareClass にマッピングされていることを確認します。クラス名を変更するには、クラスをダブルクリックします。

サンプル MATLAB ファイルの作成

プロジェクトの任意の MATLAB ファイルを使用して、サンプル MATLAB ファイルを生成できます。このファイルは .NET サンプル ドライバー ファイルを生成するために使用されます。.NET サンプル ファイルはアセンブリの作成に必須ではありませんが、.NET アセンブリの .NET アプリケーションへの統合で示すように、ターゲット言語の .NET アプリケーションを実装するためのガイドとして使用できます。

[サンプル] セクションで、[新規サンプルの作成] を選択して makesquare.m をクリックします。MATLAB ファイルが編集用に開きます。

% Sample script to demonstrate execution of function y = makesquare(x)
x = 0; % Initialize x here
y = makesquare(x);

x = 0x = 5 に変更し、ファイルを保存して、[ライブラリ コンパイラ] アプリに戻ります。

注意

目的の結果を出力するには MATLAB サンプル ファイルを編集する必要があります。生成されたターゲット言語のサンプル ファイルは、サンプル MATLAB ファイルと同じ入力と出力を使用します。

詳細と制限については、サンプル ドライバー ファイルの作成を参照してください。

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

ライブラリ コンパイラ アプリでは、インストーラーをカスタマイズし、アプリケーションをカスタマイズし、アプリケーションについて情報を追加することができます。

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

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

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

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

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

  • ランタイム追加設定 — 生成される実行可能ファイルを制御するためのプラットフォーム固有のオプション。詳細については、ランタイム追加設定を参照してください。

    Fields in the Library Compiler app for customizing your application

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

パッケージ化オプションの選択が終了したら、ライブラリ コンパイラのプロジェクトを保存し、パッケージ化されたアプリケーションを生成します。

  1. [パッケージ化] をクリックします。

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

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

    パッケージ化プロセスが完了したら、ターゲット フォルダー内の生成された出力を調べます。

    • 3 つのフォルダー for_redistributionfor_redistribution_files_only、および for_testing が生成されます。

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

    • ログ ファイル PackagingLog.html にはパッケージ化の結果が含まれています。

compiler.build.dotNETAssembly を使用した .NET アセンブリの作成

ライブラリ コンパイラ アプリの代わりに、プログラムによる方法を使用して .NET アセンブリを作成することができます。ライブラリ コンパイラを使用してアセンブリが既に作成されている場合は、.NET アセンブリの .NET アプリケーションへの統合を参照してください。

  1. ファイル makesquare.m をまだ作成していない場合は、matlabroot\toolbox\dotnetbuilder\Examples\VS15\NET\MagicSquareExample\MagicSquareComp にあるサンプル ファイルをコピーします。

    copyfile(fullfile(matlabroot,'toolbox','dotnetbuilder','Examples',...
    'VS15','NET','MagicSquareExample','MagicSquareComp','makesquare.m'));
  2. 以下のコードを makesquareSample1.m という名前のサンプル ファイルに保存します。

    x = 5;
    y = makesquare(x);

  3. 関数 compiler.build.dotNETAssembly を使用して .NET アセンブリをビルドします。名前と値の引数を使用して、アセンブリ名、クラス名、サンプル ファイルを指定します。

    buildResults = compiler.build.dotNETAssembly(appFile,...
    'AssemblyName','MagicSquareComp',...
    'ClassName','MagicSquareClass',...
    'SampleGenerationFiles','makesquareSample1.m');

    compiler.build コマンドで名前と値の引数を使用して、追加オプションを指定できます。詳細については、compiler.build.dotNETAssembly を参照してください。

    compiler.build.Results オブジェクト buildResults には、ビルド タイプ、生成ファイル、含まれるサポート パッケージ、およびビルド オプションに関する情報が含まれています。

    この関数により、現在の作業ディレクトリにある MagicSquareCompdotNETAssembly という名前のフォルダー内に以下のファイルが生成されます。

    • samples\makesquareSample1.cs — C# .NET サンプル ファイル。

    • GettingStarted.html — コマンド ラインから .NET ドライバー アプリケーションをコンパイルする手順が含まれる HTML ファイル。

    • includedSupportPackages.txt — アセンブリに含まれるすべてのサポート ファイルをリストしたテキスト ファイル。

    • MagicSquareComp.dllmwArray API を使用してアクセス可能なダイナミックリンク ライブラリ ファイル。

    • MagicSquareComp.xmlmwArray アセンブリのドキュメンテーションが含まれる XML ファイル。

    • MagicSquareComp_overview.html — アセンブリにアクセスするための要件や、mwArray クラス階層を使用して引数を生成するための要件が含まれる HTML ファイル。

    • MagicSquareCompNative.dll — ネイティブ API を使用してアクセス可能なダイナミックリンク ライブラリ ファイル。

    • MagicSquareCompNative.xml — ネイティブ アセンブリのドキュメンテーションが含まれる XML ファイル。

    • MagicSquareCompVersion.cs — バージョン情報が含まれる C# ファイル。

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

    • readme.txt — パッケージ化およびインターフェイスの情報が含まれるテキスト ファイル。

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

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

    メモ

    生成されたアセンブリに MATLAB Runtime やインストーラーは含まれていません。buildResults オブジェクトを使用してインストーラーを作成するには、compiler.package.installer を参照してください。

.NET アセンブリの .NET アプリケーションへの統合

.NET アセンブリを作成した後は、任意の .NET アプリケーションに統合することができます。この例では、パッケージ化の際に生成されたサンプル C# アプリケーション コードを使用します。このサンプル .NET アプリケーション コードは、独自のアプリケーションを記述するためのガイドとして使用できます。

メモ

入力引数を取る、より高度なアプリケーションを使用してアセンブリを呼び出すには、C# または次の対応するサブフォルダーに配置されている Visual Basic® アプリケーション MagicSquareApp を使用します。

matlabroot\toolbox\dotnetbuilder\Examples\VS15\NET\MagicSquareExample\

  1. Microsoft Visual Studio を開き、MainApp という名前の C# コンソール アプリ (.NET Framework) を作成します。

  2. 必要に応じて、プロジェクト内で作成された任意のソース コード ファイルを削除します。

  3. samples フォルダーに生成されたサンプル C# アプリケーション コード makesquareSample1.cs をプロジェクトに追加します。

    プログラム コードを以下に示します。

    using System; using System.Collections.Generic; using System.Text; using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility; using MagicSquareComp; /// <summary> /// Sample driver code that integrates a compiled MATLAB function /// generated by MATLAB Compiler SDK /// /// Refer to the MATLAB Compiler SDK documentation for more /// information. /// </summary> class makesquareSample1 { static MagicSquareClass MagicSquareClassInstance; static void Setup() { MagicSquareClassInstance = new MagicSquareClass(); } /// <summary> /// Example of using the makesquare function. /// </summary> public static void makesquareSample() { double xInData = 5.0; MWNumericArray yOut = null; Object[] results = null; try { MWNumericArray xIn = new MWNumericArray(xInData); results = MagicSquareClassInstance.makesquare(1, xIn); if (results[0] is MWNumericArray) { yOut = (MWNumericArray) results[0]; } Console.WriteLine(yOut); } catch (Exception e) { Console.WriteLine(e); } } /// <summary> /// The main entry point for the application. /// </summary> static void Main(string[] args) { try { Setup(); } catch (Exception e) { Console.WriteLine(e); Environment.Exit(1); } try { makesquareSample(); } catch (Exception e) { Console.WriteLine(e); Environment.Exit(1); } } }

    プログラムにより次が実行されます。

    • try-catch ブロックを使用して例外を処理する

    • 入力データを保存する MWNumericArray 配列を作成する

    • MagicSquareClass オブジェクト results をインスタンス化する

    • makesquare メソッドを呼び出す (最初のパラメーターは出力引数の数を指定し、以降のパラメーターは入力引数として順番に関数に渡される)

    • 関数出力をコンソールに書き込む

  4. Visual Studio で、アセンブリを生成またはインストールしたフォルダーにあるアセンブリ ファイル MagicSquareComp.dll への参照を追加します。

  5. MWArray API への参照を追加します。

    MATLAB がシステムにインストールされている場合matlabroot\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll
    MATLAB Runtime がシステムにインストールされている場合<MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll

  6. [ビルド][構成マネージャー] に移動し、プラットフォームを [Any CPU] から [x64] に変更します。

  7. コードと参照の追加が終了したら、Visual Studio を使ってアプリケーションをビルドします。

    ビルド プロセスにより、makesquareSample1.exe という名前の実行可能ファイルが生成されます。

  8. コマンド ウィンドウで、または生成された実行可能ファイルをダブルクリックして、Visual Studio でアプリケーションを実行します。

    このアプリケーションはサンプルの MATLAB コードと同じ出力を返します。

        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9

参考

| | |

関連するトピック