.NET アセンブリの生成と .NET アプリケーションのビルド
サポートされるプラットフォーム: Windows®
この例では、MATLAB® 関数から .NET アセンブリを作成し、生成されたアセンブリを .NET アプリケーションに統合する方法を説明します。
この例では、従来の MWArray API を使用します。より新しい MATLAB データ API を使用して .NET アセンブリを作成するには、Deploy MATLAB Function to .NET Application Using MATLAB Data API for .NETを参照してください。プロジェクトに適したデプロイ オプションの選択については、Choose .NET Deployment Optionを参照してください。
前提条件
MATLAB Compiler SDK™ の .NET ターゲット要件をすべて満たしていることを確認します。詳細については、MATLAB Compiler SDK の .NET ターゲットの要件を参照してください。
Microsoft® Visual Studio® がインストールされていることを確認します。.NET を使用したアプリケーション開発の詳細については、.NET 開発環境の設定を参照してください。
アプリケーションの実行には、エンド ユーザーによる 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 9compiler.build.dotNETAssembly を使用した .NET アセンブリの作成
プログラムによる方法を使用して .NET アセンブリをビルドします。あるいは、グラフィカル インターフェイスを使用して .NET アセンブリを作成する場合は、Package MATLAB Function Using .NET Assembly Compiler Appを参照してください。
ファイル
makesquare.mをまだ作成していない場合は、にある例のファイルをコピーします。matlabroot\toolbox\dotnetbuilder\Examples\VS15\NET\MagicSquareExample\MagicSquareCompcopyfile(fullfile(matlabroot,'toolbox','dotnetbuilder','Examples',... 'VS15','NET','MagicSquareExample','MagicSquareComp','makesquare.m'));
以下のコードを
makesquareSample1.mという名前のサンプル ファイルに保存します。x = 5; y = makesquare(x);
関数
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.dll—mwArrayAPI を使用してアクセス可能なダイナミックリンク ライブラリ ファイル。MagicSquareComp.xml—mwArrayアセンブリのドキュメンテーションが含まれる XML ファイル。MagicSquareComp_overview.html— アセンブリにアクセスするための要件や、mwArrayクラス階層を使用して引数を生成するための要件が含まれる HTML ファイル。MagicSquareCompNative.dll— ネイティブ API を使用してアクセス可能なダイナミックリンク ライブラリ ファイル。MagicSquareCompNative.xml— ネイティブ アセンブリのドキュメンテーションが含まれる XML ファイル。MagicSquareCompVersion.cs— バージョン情報が含まれる C# ファイル。mccExcludedFiles.log— アプリケーションに含まれていないすべてのツールボックス関数のリストが含まれるログ ファイル。サポートされていない関数の詳細については、MATLAB Compiler の制限を参照してください。readme.txt— パッケージ化およびインターフェイスの情報が含まれるテキスト ファイル。requiredMCRProducts.txt— MATLAB 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\
Microsoft Visual Studio を開き、
MainAppという名前の C# コンソール アプリ (.NET Framework) を作成します。必要に応じて、プロジェクト内で作成された任意のソース コード ファイルを削除します。
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メソッドを呼び出す (最初のパラメーターは出力引数の数を指定し、以降のパラメーターは入力引数として順番に関数に渡される)関数出力をコンソールに書き込む
Visual Studio で、アセンブリを生成またはインストールしたフォルダーにあるアセンブリ ファイル
MagicSquareComp.dllへの参照を追加します。MWArrayAPI への参照を追加します。MATLAB がシステムにインストールされている場合 matlabroot\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dllMATLAB Runtime がシステムにインストールされている場合 <MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<framework_version>\MWArray.dll[ビルド]、[構成マネージャー] に移動し、プラットフォームを [Any CPU] から [x64] に変更します。
コードと参照の追加が終了したら、Visual Studio を使ってアプリケーションをビルドします。
ビルド プロセスにより、
makesquareSample1.exeという名前の実行可能ファイルが生成されます。コマンド ウィンドウで、または生成された実行可能ファイルをダブルクリックして、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
参考
compiler.build.dotNETAssembly | mcc