.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 アセンブリの作成を参照してください。
[MATLAB アプリ] タブで、[アプリ] セクションの右端にある矢印をクリックします。[アプリケーションのデプロイ] で、[ライブラリ コンパイラ] をクリックします。
または、MATLAB コマンド プロンプトから [ライブラリ コンパイラ] アプリを開くことができます。
libraryCompiler
ツールストリップの [タイプ] セクションで、[.NET アセンブリ] をクリックします。
ライブラリ コンパイラ アプリのプロジェクト ウィンドウで、デプロイする MATLAB アプリケーションのファイルを指定します。
ツールストリップの [エクスポートする関数] セクションで、 をクリックします。
[ファイルの追加] ウィンドウで、サンプルのフォルダーを参照し、パッケージ化する関数を選択します。[開く] をクリックします。
エクスポートする関数ファイルのリストに関数が追加されます。同じアプリケーションに複数のファイルをパッケージ化するには、この手順を繰り返します。
この例では、
makesquare.m
ファイルを選択します。ツールストリップの [パッケージ化オプション] セクションで次のオプションのいずれかを選択して、生成されるアプリケーションに MATLAB Runtime インストーラーを含めるかどうかを決定します。
ランタイムを Web からダウンロード — MATLAB Runtime をダウンロードしてデプロイされた MATLAB アプリケーションと共にインストールするインストーラーを生成します。インストーラーのファイル名を指定できます。
ランタイムをパッケージに含める — MATLAB Runtime インストーラーを含むアプリケーションを生成します。インストーラーのファイル名を指定できます。
メモ
このオプションを初めて選択したときに、MATLAB Runtime インストーラーをダウンロードするように求めるメッセージが表示されます。
アセンブリ ファイル設定の指定
次に、アセンブリの名前を定義し、アプリケーションにビルドする .m
ファイルのクラス マッピングを確認します。
[ライブラリ名] フィールドに、アセンブリの名前として
makesquare
が自動的に入力されます。この名前をMagicSquareComp
に変更します。同じ名前が、アセンブリの実装時にも使用されます。[ライブラリ名] フィールドは空白または特殊文字をサポートしません。
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 = 0
を x = 5
に変更し、ファイルを保存して、[ライブラリ コンパイラ] アプリに戻ります。
注意
目的の結果を出力するには MATLAB サンプル ファイルを編集する必要があります。生成されたターゲット言語のサンプル ファイルは、サンプル MATLAB ファイルと同じ入力と出力を使用します。
詳細と制限については、サンプル ドライバー ファイルの作成を参照してください。
アプリケーションとその外観のカスタマイズ
ライブラリ コンパイラ アプリでは、インストーラーをカスタマイズし、アプリケーションをカスタマイズし、アプリケーションについて情報を追加することができます。
ライブラリ情報 — デプロイされるアプリケーションに関する情報。また、アプリケーション アイコンとスプラッシュ スクリーンを変更して、アプリケーションの外観をカスタマイズすることもできます。生成されるインストーラーはこの情報を使用して、インストールされるアプリケーションのメタデータを入力します。インストーラーのカスタマイズを参照してください。
追加インストーラー オプション — 生成されるインストーラーの既定のインストール パスと、カスタム ロゴの選択。インストール パスの変更を参照してください。
ライブラリの実行に必要なファイル — 生成されるアプリケーションを実行するために必要な追加ファイル。これらのファイルは、生成されるアプリケーション インストーラーに含められます。コンパイラ プロジェクトの必須ファイルの管理を参照してください。
エンド ユーザー用にインストールされるファイル — アプリケーションと共にインストールされるファイル。
アプリケーションと共にインストールするファイルの指定を参照してください。
ランタイム追加設定 — 生成される実行可能ファイルを制御するためのプラットフォーム固有のオプション。詳細については、ランタイム追加設定を参照してください。
アプリケーションのパッケージ化
パッケージ化オプションの選択が終了したら、ライブラリ コンパイラのプロジェクトを保存し、パッケージ化されたアプリケーションを生成します。
[パッケージ化] をクリックします。
[プロジェクトを保存] ダイアログ ボックスで、プロジェクトを保存する場所を指定します。
[パッケージ] ダイアログ ボックスで、[プロセスが完了したら出力フォルダーを開く] が選択されていることを確認します。
パッケージ化プロセスが完了したら、ターゲット フォルダー内の生成された出力を調べます。
3 つのフォルダー
for_redistribution
、for_redistribution_files_only
、およびfor_testing
が生成されます。これらのフォルダーに生成されるファイルの詳細については、MATLAB 関数のパッケージ化後に生成されるファイルを参照してください。
ログ ファイル
PackagingLog.html
にはパッケージ化の結果が含まれています。
compiler.build.dotNETAssembly
を使用した .NET アセンブリの作成
ライブラリ コンパイラ アプリの代わりに、プログラムによる方法を使用して .NET アセンブリを作成することができます。ライブラリ コンパイラを使用してアセンブリが既に作成されている場合は、.NET アセンブリの .NET アプリケーションへの統合を参照してください。
ファイル
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(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.dll
—mwArray
API を使用してアクセス可能なダイナミックリンク ライブラリ ファイル。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
への参照を追加します。MWArray
API への参照を追加します。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
| ライブラリ コンパイラ | deploytool
| mcc