Main Content

MATLAB コードを使用した汎用 COM コンポーネントの作成

サポートされるプラットフォーム: Windows®

この例では、MATLAB® 関数を使用して汎用 COM コンポーネントを作成し、アプリケーションに統合する方法を説明します。MATLAB のライセンス コピーがターゲット システムにインストールされている必要はありません。

前提条件

  • Windows 10 SDK キットがインストールされていることを確認します。詳細については、Windows 10 SDK を参照してください。

  • MinGW-w64 がインストールされていることを確認します。MathWorks File Exchange からインストールするには、MATLAB Support for MinGW-w64 C/C++ Compiler を参照してください。

    MATLAB で Windows 10 SDK キットと MinGW-w64 を確実に検出するには、次のコマンドを使用します。

    mbuild -setup -client mbuild_com

  • Microsoft® Visual Studio® がインストールされていることを確認します。

  • アプリケーションの実行には、エンド ユーザーによる MATLAB Runtime のインストールが必要です。詳細については、MATLAB Runtime のインストールと構成を参照してください。

    テスト目的で、MATLAB Runtime の代わりに MATLAB のインストールを使用することができます。

MATLAB での関数の作成

MATLAB で、パッケージ化する MATLAB コードを調べます。この例では、matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\COM\MagicSquareExample\MagicSquareComp にある makesquare.m を開きます。

function y = makesquare(x)
y = magic(x);

MATLAB コマンド プロンプトで、makesquare(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

ライブラリ コンパイラ アプリを使用した汎用 COM コンポーネントの作成

ライブラリ コンパイラ アプリを使用して、関数を COM コンポーネントにパッケージ化します。あるいは、プログラムによる方法を使用して MATLAB コマンド ウィンドウから COM コンポーネントを作成する場合は、compiler.build.COMComponent を使用した COM コンポーネントの作成を参照してください。

  1. [MATLAB アプリ] タブで、[アプリ] セクションの右端にある矢印をクリックします。[アプリケーションのデプロイ] で、[ライブラリ コンパイラ] をクリックします。[MATLAB Compiler] プロジェクト ウィンドウで、[汎用 COM コンポーネント] をクリックします。

    Library Compiler App with the Generic COM Component type selected

    または、MATLAB プロンプトで libraryCompiler と入力し、[ライブラリ コンパイラ] アプリを開きます。

  2. ライブラリ コンパイラ アプリのプロジェクト ウィンドウで、デプロイする MATLAB アプリケーションのファイルを指定します。

    1. ツールストリップの [エクスポートする関数] セクションで、Add exported function to the project をクリックします。

    2. [ファイルの追加] ウィンドウで、サンプルのフォルダーを参照し、パッケージ化する関数を選択します。[開く] をクリックします。

    エクスポートする関数ファイルのリストに関数が追加されます。同じアプリケーションに複数のファイルをパッケージ化するには、この手順を繰り返します。

  3. ツールストリップの [パッケージ化オプション] セクションで次のオプションのいずれかを選択して、生成されるアプリケーションに MATLAB Runtime インストーラーを含めるかどうかを決定します。

    • ランタイムを Web からダウンロードMATLAB Runtime をダウンロードしてデプロイされた MATLAB アプリケーションと共にインストールするインストーラーを生成します。インストーラーのファイル名を指定できます。

    • ランタイムをパッケージに含めるMATLAB Runtime インストーラーを含むアプリケーションを生成します。インストーラーのファイル名を指定できます。

      メモ

      このオプションを初めて選択したときに、MATLAB Runtime インストーラーをダウンロードするように求めるメッセージが表示されます。

  4. [ライブラリ名] フィールドで、makesquareMagicSquareComp に置き換えます。

  5. makesquare.m で定義された関数が Class1 にマッピングされていることを確認します。

    Class Name Class1 mapped to Method Name y = makesquare(x)

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

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

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

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

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

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

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

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

Library information section with the Library Name set to MagicSquareComp

アプリケーションのパッケージ化

パッケージ化オプションの選択が終了したら、ライブラリ コンパイラのプロジェクトを保存し、パッケージ化されたアプリケーションを生成します。

  1. [パッケージ化] をクリックします。

    [プロジェクトを保存] ダイアログ ボックスで、プロジェクトを保存する場所を指定します。

  2. [パッケージ] ダイアログ ボックスで、[プロセスが完了したら出力フォルダーを開く] が選択されていることを確認します。

    パッケージ化プロセスが完了したら、ターゲット フォルダー内の生成された出力を調べます。

    • 3 つのフォルダー for_redistributionfor_redistribution_files_only、および for_testing が生成されます。

      これらのフォルダーに生成されるファイルの詳細については、MATLAB 関数のパッケージ化後に生成されるファイルを参照してください。

    • ログ ファイル PackagingLog.html にはパッケージ化の結果が含まれています。

compiler.build.COMComponent を使用した COM コンポーネントの作成

ライブラリ コンパイラ アプリの代わりに、プログラムによる方法を使用して COM コンポーネントを作成できます。ライブラリ コンパイラ を使用してコンポーネントが既に作成されている場合は、COM アプリケーションへの統合を参照してください。

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

    appFile = fullfile(matlabroot,'toolbox','dotnetbuilder','Examples', ...
        'VS15','COM','MagicSquareExample','MagicSquareComp','makesquare.m');
  2. 関数 compiler.build.comComponent を使用して COM コンポーネントをビルドします。名前と値の引数を使用してコンポーネント名とクラス名を指定します。

    buildResults = compiler.build.comComponent(appFile, ...
    'ComponentName','MagicSquareComp', ...
    'ClassName','Class1');

    compiler.build コマンドで名前と値の引数を使用して、追加オプションを指定できます。詳細については、compiler.build.comComponent を参照してください。

    compiler.build.Results オブジェクト buildResults には、ビルド タイプ、生成ファイル、含まれるサポート パッケージ、およびビルド オプションに関する情報が含まれています。

    この関数により、現在の作業ディレクトリにある MagicSquareCompcomComponent という名前のフォルダー内に以下のファイルが生成されます。

    • magicsquare.def

    • magicsquare.rc

    • magicsquare_1_0.dll

    • readme.txt

    • requiredMCRProducts.txt

    • unresolvedSymbols.txt

    • Class1_com.cpp — クラスを定義する C++ ソース コード ファイル。

    • Class1_com.hpp — クラスを定義する C++ ヘッダー ファイル。

    • dlldata.c — DLL のクラス ファクトリに必要なエントリ ポイントとデータ構造が含まれる C ソース コード ファイル。

    • GettingStarted.html — COM コンポーネントのインストールの手順が含まれる HTML ファイル。

    • includedSupportPackages.txt — 含まれているサポート パッケージに関する情報が含まれるテキスト ファイル。

    • MagicSquareComp.def — DLL エクスポート テーブルにどの関数を含めるかを定義するモジュール定義ファイル。

    • MagicSquareComp.rc — コンポーネントで使用されるリソースを記述するリソース スクリプト ファイル。

    • MagicSquareComp_1_0.dll — ダイナミックリンク ライブラリ ファイル。

    • MagicSquareComp_dll.cpp — 補助関数が含まれる C++ ソース コード ファイル。

    • MagicSquareComp_idl.h — C++ ヘッダー ファイル。

    • MagicSquareComp_idl.idl — インターフェイス定義言語ファイル。

    • MagicSquareComp_idl.tlb — COM オブジェクトのプロパティおよびメソッドに関する情報が含まれるタイプ ライブラリ ファイル。

    • MagicSquareComp_idl_i.c — IDL インターフェイスの IID および CLSID が含まれる C ソース コード ファイル。

    • MagicSquareComp_idl_p.c — IDL インターフェイスのプロキシ スタブ コードが含まれる C ソース コード ファイル。

    • mccExcludedFiles.log — アプリケーションに含まれていないすべてのツールボックス関数のリストが含まれるログ ファイル。サポートされていない関数の詳細については、MATLAB Compiler の制限を参照してください。

    • mwcomtypes.h — インターフェイスの定義が含まれる C++ ヘッダー ファイル。

    • mwcomtypes_i.c — IID および CLSID が含まれる C ソース コード ファイル。

    • mwcomtypes_p.c — プロキシ スタブ コードが含まれる C ソース コード ファイル。

    • readme.txt — デプロイ情報が含まれるテキスト ファイル。

    • requiredMCRProducts.txtMATLAB Runtime がアプリケーションを実行するために必要な製品の製品 ID が含まれるテキスト ファイル。

    • unresolvedSymbols.txt — 未解決のシンボルに関する情報が含まれるテキスト ファイル。

    メモ

    生成されたコンポーネントには MATLAB Runtime またはインストーラーが含まれていません。buildResults オブジェクトを使用してインストーラーを作成するには、compiler.package.installer を参照してください。

COM アプリケーションへの統合

COM コンポーネントをアプリケーションに統合するには、Creating the Microsoft Visual Basic Projectを参照してください。

参考

| | |

関連するトピック