Main Content

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

MATLAB コードによる C 共有ライブラリの作成

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

この例では、MATLAB® 関数を使用して C 共有ライブラリを作成する方法を説明します。MATLAB のライセンス コピーがターゲット システムにインストールされている必要はありません。

MATLAB での関数の作成

  1. MATLAB で、パッケージ化する MATLAB コードを調べます。

    この例では、MATLAB に付属している matrix フォルダーを作業フォルダーにコピーします。

    copyfile(fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix'),'matrix')

    作業フォルダー内の新しい matrix サブフォルダーに移動します。

  2. 関数 addmatrix.mmultiplymatrix.m、および eigmatrix.m を確認してテストします。

     addmatrix.m

    MATLAB コマンド プロンプトで、addmatrix([1 4 7; 2 5 8; 3 6 9], [1 4 7; 2 5 8; 3 6 9]) と入力します。

    出力は以下のようになります。

     ans =
         2     8    14
         4    10    16
         6    12    18

     multiplymatrix.m

    MATLAB コマンド プロンプトで、multiplymatrix([1 4 7; 2 5 8; 3 6 9], [1 4 7; 2 5 8; 3 6 9]) と入力します。

    出力は以下のようになります。

     ans =
        30    66   102
        36    81   126
        42    96   150

     eigmatrix.m

    MATLAB コマンド プロンプトで、eigmatrix([1 4 7; 2 5 8; 3 6 9]) と入力します。

    出力は以下のようになります。

     ans =
       16.1168
       -1.1168
       -0.0000
    

ライブラリ コンパイラ アプリを使用した C 共有ライブラリの作成

ライブラリ コンパイラ アプリを使用して C 共有ライブラリをビルドします。あるいは、プログラムによる方法で MATLAB コマンド ウィンドウから C 共有ライブラリを作成する場合は、compiler.build.cSharedLibrary を使用した C 共有ライブラリの作成を参照してください。

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

    Library Compiler App with the C Shared Library type selected and addmatrix.m, eigmatrix.m, and multiplymatrix.m in the exported functions section

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

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

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

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

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

    addmatrix.mmultiplymatrix.m、および eigmatrix.m をメイン ファイルのリストに追加します。

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

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

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

      メモ

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

  4. [ライブラリ名] フィールドで、パッケージ化された共有ライブラリの名前を libmatrix に変更します。同じ名前が、共有ライブラリの実装時にも使用されます。

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

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

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

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

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

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

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

Library information section with the Library Name set to libmatrix

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

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

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

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

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

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

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

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

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

compiler.build.cSharedLibrary を使用した C 共有ライブラリの作成

ライブラリ コンパイラ アプリの代わりに、プログラムによる方法を使用して C 共有ライブラリを作成できます。ライブラリ コンパイラを使用してライブラリを既に作成している場合は、C アプリケーションでの C 共有ライブラリの実装を参照してください。

  • 関数 compiler.build.cSharedLibrary を使用して C 共有ライブラリをビルドします。名前と値の引数を使用してライブラリ名を指定し、詳細な出力を有効にします。

    buildResults = compiler.build.cSharedLibrary(["addmatrix.m", ...
    "eigmatrix.m","multiplymatrix.m"], ...
    'LibraryName','libmatrix', ...
    'Verbose','on');

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

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

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

    • GettingStarted.html — 共有ライブラリの統合に関する情報が含まれる HTML ファイル。

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

    • libmatrix.c — C ソース コード ファイル。

    • libmatrix.def — リンカーにモジュール情報を提供するモジュール定義ファイル。

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

    • libmatrix.exports — すべての非静的関数名が含まれるエクスポート ファイル。

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

    • libmatrix.lib — インポート ライブラリ ファイル。Mac でのファイル拡張子は .dylib、UNIX® でのファイル拡張子は .so です。

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

    • readme.txt — パッケージ化情報が含まれるテキスト ファイル。

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

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

    メモ

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

C アプリケーションでの C 共有ライブラリの実装

C 共有ライブラリをパッケージ化した後、これを C アプリケーションから呼び出すことができます。C アプリケーション コードは共有ライブラリに含まれる関数を呼び出します。

  1. matlabroot\extern\examples\compilersdk\c_cpp\matrix または作業フォルダーにある matrix.c ファイルを見つけます。

     matrix.c

    このファイルをコピーして、C 共有ライブラリ libmatrix.lib を含むフォルダーに貼り付けます。ライブラリ コンパイラを使用した場合、このファイルは for_testing フォルダーにあります。

    メモ

    拡張子 .lib は Windows 用です。Mac でのファイル拡張子は .dylib、UNIX でのファイル拡張子は .so です。

  2. MATLAB コマンド プロンプトで、matrix.c のコピー先のフォルダーに移動します。

  3. mbuild を使用して、アプリケーションをコンパイルしてリンクします。

    mbuild matrix.c libmatrix.lib
  4. システムのコマンド プロンプトからアプリケーションを実行します。

    matrix
    The sum of the matrix with itself is: 
    2.00		8.00		14.00	 
    4.00		10.00		16.00	 
    6.00		12.00		18.00	 
     
    The product of the matrix with itself is: 
    30.00		66.00		102.00	 
    36.00		81.00		126.00	 
    42.00		96.00		150.00		 
     
    The eigenvalues of the original matrix are: 
    16.12		-1.12		-0.00

    メモ

    次を実行して、UNIX システムのアプリケーションの実行権限を与える必要がある場合があります。

    chmod u+x matrix

参考

| | |

関連するトピック