.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 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