メインコンテンツ

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

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

compiler.build.comComponent 関数を使用して、関数を COM コンポーネントにパッケージ化します。

  1. matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\COM\MagicSquareExample\MagicSquareComp にある makesquare.m ファイルを作業ディレクトリにコピーします。たとえば、Visual Studio Version 15 を使用している場合は、次のように入力します。

    copyfile(fullfile(matlabroot,'toolbox','dotnetbuilder','Examples', ...
        'VS15','COM','MagicSquareExample','MagicSquareComp','makesquare.m'));
    appFile = which('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を参照してください。

参考

|

トピック