Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

compiler.build.comComponent

MATLAB の外部でデプロイする COM コンポーネントを作成

R2021a 以降

説明

注意

この関数は Windows® オペレーティング システムでのみサポートされています。

compiler.build.comComponent(Files) は、Files で指定された MATLAB® 関数を使用して COM コンポーネントを作成します。

compiler.build.comComponent(Files,Name,Value) は、名前と値の引数を 1 つ以上使用して追加オプションを指定して COM コンポーネントを作成します。オプションには、クラス名、出力ディレクトリ、含める追加ファイルなどがあります。

compiler.build.comComponent(ClassMap) は、container.Map オブジェクト ClassMap を使用してクラス マッピングを指定して COM コンポーネントを作成します。

compiler.build.comComponent(ClassMap,Name,Value) は、名前と値の引数を 1 つ以上使用して指定した追加オプションと ClassMap を使用して COM コンポーネントを作成します。オプションには、コンポーネント名、出力ディレクトリ、含める追加ファイルなどがあります。

compiler.build.comComponent(opts) は、compiler.build.COMComponentOptions オブジェクト opts を使用してオプションを指定して COM コンポーネントを作成します。名前と値の引数を使用して他のオプションを指定することはできません。

results = compiler.build.comComponent(___) は、前述の構文にある引数の任意の組み合わせを使用して、ビルド情報を compiler.build.Results オブジェクトとして返します。ビルド情報は、ビルド タイプ、コンパイル済みファイルへのパス、およびビルド オプションで構成されます。

すべて折りたたむ

魔方陣を生成する関数ファイルを使用して、Windows システムで COM コンポーネントを作成します。

以下がインストールされていることを確認します。

  • Windows SDK。詳細については、Windows SDK を参照してください。

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

    mbuild -setup -client mbuild_com を使用して、MATLAB で COM コンポーネントを確実に作成できるようにします。

MATLAB で、COM コンポーネントとしてデプロイする MATLAB 関数を見つけます。この例では、matlabroot\extern\examples\compiler にあるファイル magicsquare.m を使用します。

appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');

compiler.build.comComponent コマンドを使用して、COM コンポーネントをビルドします。

compiler.build.comComponent(appFile);

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

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

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

  • includedSupportPackages.txt — コンポーネントに含まれるすべてのサポート ファイルをリストしたテキスト ファイル。

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

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

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

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

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

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

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

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

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

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

  • magicsquareClass_com.hpp — クラスを定義する 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 — 未解決のシンボルに関する情報が含まれるテキスト ファイル。

このコンポーネントをスタンドアロンの Microsoft® Visual Basic® アプリケーションに統合する方法を示す例については、Integrate Magic Square into a COM Applicationを参照してください。

COM オブジェクトのビルドと他の言語へのマッピングに関する IDL および C++ のコーディング ルールの詳細については、Microsoft のドキュメンテーションを参照してください。

Windows システムで COM コンポーネントを作成し、名前と値の引数を使用してカスタマイズします。

この例では、matlabroot\extern\examples\compiler にあるファイル flames.mflames.mat を使用します。

appFile = fullfile(matlabroot,'extern','examples','compiler','flames.m');
MATFile = fullfile(matlabroot,'extern','examples','compiler','flames.mat');

compiler.build.comComponent コマンドを使用して、COM コンポーネントをビルドします。名前と値の引数を使用してコンポーネントの名前とバージョンを指定し、MAT ファイルを追加して、詳細な出力を有効にします。

compiler.build.comComponent(appFile,'ComponentName','MyFlames',...
    'ComponentVersion','2.0',...
    'AdditionalFiles',MATFile,...
    'Verbose','on');

このコンポーネントをスタンドアロンの Microsoft Visual Basic アプリケーションに統合する方法を示す例については、Integrate Magic Square into a COM Applicationを参照してください。

クラス マップおよび複数の関数ファイルを使用して、Windows システムで COM コンポーネントを作成します。

キーがクラス名で、値が関数ファイルの場所である containers.Map オブジェクトを作成します。

cmap = containers.Map;
cmap('Class1') = {'exampleFcn1.m'};
cmap('Class2') = {'exampleFcn2.m','exampleFcn3.m'};

compiler.build.comComponent コマンドを使用して、COM コンポーネントをビルドします。名前と値の引数を使用してコンポーネントの名前とバージョンを指定します。

compiler.build.comComponent(cmap,...
    'ComponentName','MyComponent',...
    'ComponentVersion','2.0');

このコンポーネントをスタンドアロンの Microsoft Visual Basic アプリケーションに統合する方法を示す例については、Integrate Magic Square into a COM Applicationを参照してください。

compiler.build.COMComponentOptions オブジェクトを使用して、Windows システムで複数の COM コンポーネントを作成します。

この例では、matlabroot\extern\examples\compiler にあるファイル magicsquare.m を使用します。

appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');

appFile を使用して COMComponentOptions オブジェクトを作成します。名前と値の引数を使用して共通の出力ディレクトリを指定し、アセンブリ アーカイブを別途生成して、詳細な出力を有効にします。

opts = compiler.build.COMComponentOptions(appFile,...
    'OutputDir','D:\Documents\MATLAB\work\COMComponentBatch',...
    'EmbedArchive','off',...
    'Verbose','on')
opts =

  COMComponentOptions with properties:

            ClassMap: [1×1 containers.Map]
          ComponentName: 'magicsquare'
       ComponentVersion: '1.0.0.0'
           EmbedArchive: off
        AdditionalFiles: {}s+ AutoDetectDataFiles: ons+ ObfuscateArchive: offs+ SupportPackages: {'autodetect'}
                Verbose: on
              OutputDir: 'D:\Documents\MATLAB\work\COMComponentBatch'

   Class Map Information
       magicsquareClass: {'C:\Program Files\MATLAB\R2024a\extern\examples\compiler\magicsquare.m'}

COMComponentOptions オブジェクトを使用して COM コンポーネントをビルドします。

compiler.build.comComponent(opts);

同じオプションをもつ関数ファイル myMagic2.m を使用してコンパイルするには、ビルド関数を再度実行する前に、ドット表記を使用して既存の COMComponentOptions オブジェクトの ClassMap を変更します。

remove(opts.ClassMap, keys(opts.ClassMap));
opts.ClassMap('myMagic2Class') = 'myMagic2.m';
compiler.build.comComponent(opts);

ClassMap 引数を変更して再コンパイルすることにより、同じオプション オブジェクトを使用して複数のコンポーネントを作成できます。

COM コンポーネントを Windows システムで作成し、ビルド タイプ、生成ファイル、含まれるサポート パッケージ、およびビルド オプションに関する情報を compiler.build.Results オブジェクトに保存します。

ファイル magicsquare.m を使用してコンパイルします。

results = compiler.build.comComponent('magicsquare.m')
results = 

  Results with properties:

              BuildType: 'comComponent'
                  Files: {2×1 cell}
IncludedSupportPackages: {}
                Options: [1×1 compiler.build.COMComponentOptions]

Files プロパティには、以下のコンパイル済みファイルへのパスが格納されます。

  • magicsquare_1_0.dll

  • GettingStarted.html

入力引数

すべて折りたたむ

MATLAB 関数を実装するファイル。文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。ファイル パスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。ファイルには .m 拡張子が必要です。

例: ["myfunc1.m","myfunc2.m"]

データ型: char | string | cell

クラス マップ。containers.Map オブジェクトとして指定します。マッピングのキーはクラス名であり、各値は対応するクラスにマッピングされるファイルのセットです。ファイルには .m 拡張子が必要です。

例: cmap

COM コンポーネントのビルド オプション。compiler.build.COMComponentOptions オブジェクトとして指定します。

名前と値の引数

オプションのペアの引数を Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定する必要がありますが、ペアの順序は考慮されません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: 'EmbedArchive','on'

COM コンポーネントに含める追加のファイルとフォルダー。文字ベクトル、string スカラー、string 配列、または文字ベクトルの cell 配列として指定します。パスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。

例: 'AdditionalFiles',["myvars.mat","data.txt"]

データ型: char | string | cell

データ ファイルを自動的に含めるためのフラグ。'on' または 'off'、もしくは数値または logical の 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • このプロパティを 'on' に設定した場合、特定の関数 (loadfopen など) の入力として指定したデータ ファイルは自動的に COM コンポーネントに含められます。

  • このプロパティを 'off' に設定した場合、データ ファイルは AdditionalFiles プロパティを使用してコンポーネントに追加しなければなりません。

例: 'AutoDetectDataFiles','off'

データ型: logical

COM クラスの名前。文字ベクトルまたは string スカラーとして指定します。ClassMap 入力を使用する場合、このオプションは指定できません。クラス名は COM のクラス名の要件に適合しなければなりません。

既定値は、Files 引数にリストされている最初のファイルの名前に Class を追加したものです。

例: 'ClassName','magicsquareClass'

データ型: char | string

COM コンポーネントの名前。文字ベクトルまたは string スカラーとして指定します。この値は Windows レジストリに入力されるプログラム ID として機能します。生成されたコンポーネントの既定の名前は、Files 引数の最初のエントリです。名前は文字で始まり、英字とピリオドのみが含まれる必要があります。

例: 'ComponentName','mycomponent'

データ型: char | string

コンポーネントのバージョン。文字ベクトルまたは string スカラーとして指定します。MATLAB Compiler SDK™ を使用したバージョン管理の詳細については、Versioningを参照してください。

例: 'ComponentVersion','4.0'

データ型: char | string

デプロイ可能なアーカイブを組み込むためのフラグ。'on' または 'off'、もしくは数値または logical の 1 (true) か 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • このプロパティを 'on' に設定した場合、関数はデプロイ可能なアーカイブを COM コンポーネントに組み込みます。

  • このプロパティを 'off' に設定した場合、関数はデプロイ可能なアーカイブを別個のファイルとして生成します。

例: 'EmbedArchive','off'

データ型: logical

デプロイ可能なアーカイブを難読化するためのフラグ。'on' または 'off'、もしくは数値または logical の 1 (true) か 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • このプロパティを 'on' に設定した場合、デプロイ可能なアーカイブのフォルダー構造およびファイル名はエンド ユーザーに対して難読化され、MATLAB ファイルに含まれているユーザー コードおよびデータはアーカイブ内のユーザー パッケージに配置されます。また、すべての .m ファイルがパッケージ化の前に P ファイルに変換されます。このオプションは、-j および -s を指定して mcc を使用するのと等価です。

  • このプロパティを 'off' に設定した場合、デプロイ可能なアーカイブは難読化されません。これは既定の動作です。

例: 'ObfuscateArchive','on'

データ型: logical

ビルド ファイルが保存される出力ディレクトリへのパス。文字ベクトルまたは string スカラーとして指定します。このパスは現在の作業ディレクトリを基準とした相対パス、または絶対パスにできます。

ビルド フォルダーの既定の名前は、コンポーネント名に comComponent を追加したものです。

例: 'OutputDir','D:\Documents\MATLAB\work\mycomponentcomComponent'

データ型: char | string

含めるサポート パッケージ。次のオプションのいずれかとして指定します。

  • 'autodetect' (既定) — 依存関係の分析プロセスにより、必要なサポート パッケージが自動的に検出され、含められます。

  • 'none' — サポート パッケージは含められません。このオプションを使用すると、ランタイム エラーの原因となる可能性があります。

  • string スカラー、文字ベクトル、または文字ベクトルの cell 配列 — 指定されたサポート パッケージのみが含められます。インストールされている、または特定のファイルで使用されるサポート パッケージのリストを表示するには、compiler.codetools.deployableSupportPackages を参照してください。

例: 'SupportPackages',{'Deep Learning Toolbox Converter for TensorFlow Models','Deep Learning Toolbox Model for Places365-GoogLeNet Network'}

データ型: char | string | cell

ビルドの詳細を制御するためのフラグ。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • このプロパティを 'on' に設定した場合、MATLAB コマンド ウィンドウには、ビルド プロセス中のコンパイラ出力を示す進行状況情報が表示されます。

  • このプロパティを 'off' に設定した場合、コマンド ウィンドウには進行状況の情報は表示されません。

例: 'Verbose','on'

データ型: logical

出力引数

すべて折りたたむ

ビルド結果。compiler.build.Results オブジェクトとして返されます。Results オブジェクトには以下が含まれています。

  • 'comComponent' であるビルド タイプ

  • 以下のファイルへのパス:

    • ComponentName_ComponentVersion.dll

    • GettingStarted.html

  • 含まれているサポート パッケージ

  • ビルド オプション。COMComponentOptions オブジェクトとして指定

制限

  • この関数は Windows オペレーティング システムでのみサポートされています。

バージョン履歴

R2021a で導入