3

MCCを使用して単一の実行可能ファイルを作成するためにコンパイルするMATLABプロジェクトがあります。

次に、プロジェクト全体を再コンパイルせずに、外部プログラマーが.exe内で.mファイルの一部を実行できるかどうかを知りたいと思います。

重要なのは、他の開発者がMATLABで記述された「プラグイン」を追加できるアプリケーションを提供することです。

コンパイルされたMATLABアプリケーション内で外部の.mファイルを実行する方法を検索しました(このスレッドのように:MATLABでコンパイルされた関数から.mファイルを実行します)が、eval( )。

ただし、このeval()の「トリック」では、新しい関数やクラスを定義できないため、十分ではありません。たとえば、外部の.mファイルを新しいクラス(実行可能ファイルでコンパイルされた「インターフェイス」から継承)にしたいと思います。

.mファイルをMATALBでコンパイルされた実行可能ファイルに動的にロードする方法はありますか?(そのためにMATLABライセンスが必要な場合でも)。

および/または私がさらに調査できるこの特定のトピックを参照する「文書化されていないMATLAB」はありますか?

よろしく、

4

2 に答える 2

1

任意の .m ファイルを実行できるコンパイル済みアプリケーションを作成して配布できた場合、ユーザーは MATLAB で実行できるほとんどすべてのことを無料で実行できます (意図していなくても)。

それらにその機能を提供することは (より無害で有用なものを意図していたとしても)、MATLAB Compiler のライセンス契約に違反しており、MathWorks はそれを困難にするためにいくつかの技術的な制限も設けています。

技術的な制限の一部を部分的に回避する方法を見つけることはできますが、ユーザーがプラグインで任意の m コードを実行できるようにすると、ライセンス違反になります。

(もちろんIANAL)

于 2012-06-04T21:29:40.210 に答える
0

唯一の方法は、コンパイルされた関数からいくつかのシステム コールを実行することだと思います。

mFile2Launch='foo'; %%% or whatever input
system(['matlab -r "' mFile2Launch '"']);

または、より複雑な行を使用して、すべてがうまく機能することを確認することもできます。

system(['matlab -nodesktop -nosplash -nodisplay -r "try, ' mFile2Launch '; end; quit"'])
于 2012-06-04T14:46:36.810 に答える