このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
MATLAB コードによる C 共有ライブラリの作成
サポートされるプラットフォーム: Windows®、Linux®、Mac
この例では、MATLAB® 関数を使用して C 共有ライブラリを作成する方法を説明します。MATLAB のライセンス コピーがターゲット システムにインストールされている必要はありません。
MATLAB での関数の作成
MATLAB で、パッケージ化する MATLAB コードを調べます。
この例では、MATLAB に付属している
matrix
フォルダーを作業フォルダーにコピーします。copyfile(fullfile(matlabroot,'extern','examples','compilersdk','c_cpp','matrix'),'matrix')
作業フォルダー内の新しい
matrix
サブフォルダーに移動します。関数
addmatrix.m
、multiplymatrix.m
、およびeigmatrix.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
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
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 共有ライブラリの作成を参照してください。
[MATLAB アプリ] タブで、[アプリ] セクションの右端にある矢印をクリックします。[アプリケーションのデプロイ] で、[ライブラリ コンパイラ] をクリックします。[MATLAB Compiler] プロジェクト ウィンドウで、[C 共有ライブラリ] をクリックします。
または、MATLAB プロンプトで
libraryCompiler
と入力し、[ライブラリ コンパイラ] アプリを開きます。ライブラリ コンパイラ アプリのプロジェクト ウィンドウで、デプロイする MATLAB アプリケーションのファイルを指定します。
ツールストリップの [エクスポートする関数] セクションで、
をクリックします。
[ファイルの追加] ウィンドウで、サンプルのフォルダーを参照し、パッケージ化する関数を選択します。[開く] をクリックします。
エクスポートする関数ファイルのリストに関数が追加されます。同じアプリケーションに複数のファイルをパッケージ化するには、この手順を繰り返します。
addmatrix.m
、multiplymatrix.m
、およびeigmatrix.m
をメイン ファイルのリストに追加します。ツールストリップの [パッケージ化オプション] セクションで次のオプションのいずれかを選択して、生成されるアプリケーションに MATLAB Runtime インストーラーを含めるかどうかを決定します。
ランタイムを Web からダウンロード — MATLAB Runtime をダウンロードしてデプロイされた MATLAB アプリケーションと共にインストールするインストーラーを生成します。インストーラーのファイル名を指定できます。
ランタイムをパッケージに含める — MATLAB Runtime インストーラーを含むアプリケーションを生成します。インストーラーのファイル名を指定できます。
メモ
このオプションを初めて選択したときに、MATLAB Runtime インストーラーをダウンロードするように求めるメッセージが表示されます。
[ライブラリ名] フィールドで、パッケージ化された共有ライブラリの名前を
libmatrix
に変更します。同じ名前が、共有ライブラリの実装時にも使用されます。
アプリケーションとその外観のカスタマイズ
ライブラリ コンパイラ アプリでは、インストーラーをカスタマイズし、アプリケーションをカスタマイズし、アプリケーションについて情報を追加することができます。
ライブラリ情報 — デプロイされるアプリケーションに関する情報。また、アプリケーション アイコンとスプラッシュ スクリーンを変更して、アプリケーションの外観をカスタマイズすることもできます。生成されるインストーラーはこの情報を使用して、インストールされるアプリケーションのメタデータを入力します。インストーラーのカスタマイズを参照してください。
追加インストーラー オプション — 生成されるインストーラーの既定のインストール パスと、カスタム ロゴの選択。インストール パスの変更を参照してください。
ライブラリの実行に必要なファイル — 生成されるアプリケーションを実行するために必要な追加ファイル。これらのファイルは、生成されるアプリケーション インストーラーに含められます。コンパイラ プロジェクトの必須ファイルの管理を参照してください。
エンド ユーザー用にインストールされるファイル — アプリケーションと共にインストールされるファイル。
アプリケーションと共にインストールするファイルの指定を参照してください。
アプリケーションのパッケージ化
パッケージ化オプションの選択が終了したら、ライブラリ コンパイラのプロジェクトを保存し、パッケージ化されたアプリケーションを生成します。
[パッケージ化] をクリックします。
[プロジェクトを保存] ダイアログ ボックスで、プロジェクトを保存する場所を指定します。
[パッケージ] ダイアログ ボックスで、[プロセスが完了したら出力フォルダーを開く] が選択されていることを確認します。
パッケージ化プロセスが完了したら、ターゲット フォルダー内の生成された出力を調べます。
3 つのフォルダー
for_redistribution
、for_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.txt
— MATLAB Runtime がアプリケーションを実行するために必要な製品の製品 ID が含まれるテキスト ファイル。unresolvedSymbols.txt
— 未解決のシンボルに関する情報が含まれるテキスト ファイル。
メモ
生成されたライブラリに MATLAB Runtime やインストーラーは含まれていません。
buildResults
オブジェクトを使用してインストーラーを作成するには、compiler.package.installer
を参照してください。
C アプリケーションでの C 共有ライブラリの実装
C 共有ライブラリをパッケージ化した後、これを C アプリケーションから呼び出すことができます。C アプリケーション コードは共有ライブラリに含まれる関数を呼び出します。
matlabroot\extern\examples\compilersdk\c_cpp\matrix
または作業フォルダーにあるmatrix.c
ファイルを見つけます。このファイルをコピーして、C 共有ライブラリ
libmatrix.lib
を含むフォルダーに貼り付けます。ライブラリ コンパイラを使用した場合、このファイルはfor_testing
フォルダーにあります。メモ
拡張子
.lib
は Windows 用です。Mac でのファイル拡張子は.dylib
、UNIX でのファイル拡張子は.so
です。MATLAB コマンド プロンプトで、
matrix.c
のコピー先のフォルダーに移動します。mbuild
を使用して、アプリケーションをコンパイルしてリンクします。mbuild matrix.c libmatrix.lib
システムのコマンド プロンプトからアプリケーションを実行します。
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
参考
compiler.build.cSharedLibrary
| ライブラリ コンパイラ | deploytool
| mxArray (C)