メインコンテンツ

.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

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

プログラムによる方法を使用して .NET アセンブリをビルドします。あるいは、グラフィカル インターフェイスを使用して .NET アセンブリを作成する場合は、Package MATLAB Function Using .NET Assembly Compiler Appを参照してください。

  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('makesquare.m',...
    '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

参考

|

トピック