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 18MATLAB コマンド プロンプトで、
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 150MATLAB コマンド プロンプトで、
eigmatrix([1 4 7; 2 5 8; 3 6 9])と入力します。出力は以下のようになります。
ans = 16.1168 -1.1168 -0.0000
compiler.build.cSharedLibrary を使用した 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、Linux でのファイル拡張子は.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 共有ライブラリ (Windows の場合は
libmatrix.lib、Mac の場合はlibmatrix.dylib、Linux の場合はlibmatrix.so) を含むフォルダーに貼り付けます。MATLAB コマンド プロンプトで、
matrix.cのコピー先のフォルダーに移動します。mbuildを使用して、アプリケーションをコンパイルしてリンクします。mbuild matrix.c libmatrix.<ext>
アプリケーションを Linux システムまたは Mac システムで実行するには、まず MATLAB Runtime をライブラリ パスに追加しなければなりません。詳細については、デプロイ用の MATLAB Runtime パスの設定を参照してください。
システムのコマンド プロンプトからアプリケーションを実行します。Windows の場合は、スラッシュをバックスラッシュ (
\) に置き換えます。./matrixThe 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
メモ
Linux システムまたは Mac システムでは、アプリケーションの実行権限を与える必要がある場合があります。
chmod u+x matrix
参考
compiler.build.cSharedLibrary | mxArray (C)
