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 関数matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\MagicSquareExample\MagicSquareComp\makesquare.m
MWArray API リファレンスmatlabroot\help\dotnetbuilder\MWArrayAPI

MATLAB での関数の作成

MATLAB で、パッケージ化対象の MATLAB コードを調べます。この例では、makesquare.m を開きます。

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

    Compiler tab with the Library Compiler app open

  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 ファイルを使用して、サンプル .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 に変更し、ファイルを保存して、[ライブラリ コンパイラ] アプリに戻ります。

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

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

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

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

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

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

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

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

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

    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. matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\MagicSquareExample\MagicSquareComp にある makesquare.m ファイルへのパスを保存します。たとえば、Visual Studio Version 15 を使用している場合は、次のように入力します。

    appFile = 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 — .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 アプリケーションに統合することができます。この例では、パッケージ化の際に生成されたサンプル .NET アプリケーション コードを使用します。このサンプル .NET アプリケーション コードは、独自のアプリケーションを記述するためのガイドとして使用できます。

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

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

  3. for_redistribution_files_only\samples フォルダーに生成されたサンプル .NET アプリケーション コード 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 var 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); } } }
  4. Visual Studio で、アセンブリを生成またはインストールしたフォルダーにあるアセンブリ ファイル MagicSquareComp.dll への参照を追加します。

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

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

メモ

この例では、サンプル C# アプリケーションから .NET アセンブリを呼び出す方法を示します。Visual Basic® アプリケーションからアセンブリを呼び出すには、次の場所にある Microsoft Visual Studio プロジェクト ファイル MagicSquareVBApp.vbproj と Visual Basic ファイル MagicSquareApp.vb を使用します。

matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\MagicSquareExample\MagicSquareVBApp\

参考

| | |

関連するトピック