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)

 Akzeptierte Antwort

MathWorks Support Team
MathWorks Support Team am 7 Mai 2012
Bearbeitet: MathWorks Support Team am 27 Jan. 2020

0 Stimmen

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

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB 関数のパッケージ化 finden Sie in Hilfe-Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!