スタンドアロンアプリケーションの中で addpath コマンドを使用するとエラーとなるのはなぜですか?
5 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2016 年 3 月 28 日
編集済み: MathWorks Support Team
2022 年 6 月 21 日
自作の .m ファイルや、startup.m 内で addpath コマンドを使用してパスの追加をしています。MATLAB Compiler でこのような .m ファイルをスタンドアロンアプリケーション化後、実行すると以下のようなエラーとなります。
An unknown error occurred while executing MATLAB code. MCL:Runtime:InternalFeval
採用された回答
MathWorks Support Team
2022 年 6 月 21 日
編集済み: MathWorks Support Team
2022 年 6 月 21 日
このような挙動は、MATLAB Compiler でコンパイルを行ったマシンでスタンドアロンアプリケーションを実行させると起こります。
複数の .m ファイルで構成される MATLAB プログラムを、MATLAB Compiler でコンパイルする際、メインの .m ファイルで使用される、サブの .m ファイルが特定のディレクトリにある場合、そのパスはスタンドアロンアプリケーションに含まれます(自動でパスが登録されます)。
このため、addpath コマンド等で追加でパス設定を行うと、ファイルの検索の順番が変更され、同じ名前の別のファイルへのアクセスが発生し、エラーとなる場合があります。
基本的に、スタンドアロンアプリ内では、パスの取得は問題ありませんが、パスの設定、追加等は推奨されておりません。
上記の理由により、回避方法として isdeployed により addpath の使用を避けることをご検討ください。
例えば、以下をコンパイルすることにより、エラーを回避できます。
-----------------------
if ~isdeployed
addpath([pwd '\functions'])
end
-----------------------
スタンドアロンアプリケーションにおけるパスの取り扱いについては以下で紹介されています。
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で スタンドアロン アプリケーション についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!