MATLAB Compiler でビルドした共有ライ​ブラリをロードできな​いのはなぜですか?

MATLAB Compiler を使って共有ライブラリをビルドします。コンパイラは、LCC コンパイラを選択し、ビルドは正常に行うことができます。
次に Microsoft Visual Studio .NET 2003 統合環境(IED) を使って、上記にて生成されたライブラリとのリンクを持つスタンドアロンアプリケーションを作成しました。しかし、アプリケーションが実行されたとき、MATLAB Compiler で生成されたライブラリはプロセスにロードされません。
また、他の例としては、MATLAB Compiler でビルドした共有ライブラリを Borland C++ でコンパイルすると、下記のエラーが発生します。
%%%BEGUB ERROR%%%
Error: 'XXX.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

 Réponse acceptée

MathWorks Support Team
MathWorks Support Team le 7 Mai 2012
Modifié(e) : MathWorks Support Team le 27 Jan 2020

0 votes

Release 2011a (R2011a) にて、ドキュメントに追加されました。それ以前のリリースに関しては、以下の追加情報をご確認ください。
この問題は、インポートされるライブラリが異なるコンパイラによって生成されたことに起因します。前者の例では、MATLAB Compiler では LCC コンパイラが使用されたのに対し、スタンドアロンアプリケーションは、Microsoft Visual Studio .NET 2003 コンパイラが使用されており、コンパイラ間での互換性に問題が生じています。
この問題を回避するためには、共有ライブラリの生成と、スタンドアプリケーションのコンパイル/リンクに使用するコンパイラを統一させることをご検討ください。
それぞれの処理でコンパイラを統一することが難しい場合には、インポートライブラリを生成するための、コンパイラに特化したツールを使用することも可能です。
32bit版 MATLAB で提供されている LCC コンパイラでは、lcc_implib.exe ツールが $MATLABROOT\sys\lcc\bin フォルダで提供されています。
※<$MATLABROOT>は MATLAB のインストールディレクトリです。
このツールは、LCCとの互換性のあるインポートライブラリを生成することができ、任意のコンパイラで使用可能です。詳細については、関連ソリューションをご覧ください。

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB 関数のパッケージ化 dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!