Matlab compilerで作​成したexeファイル​で”関数xxx.mが​未定義です”というエ​ラーがたまに出る

7 vues (au cours des 30 derniers jours)
Makiko
Makiko le 10 Sep 2024
Commenté : Kojiro Saito le 11 Sep 2024
自分で作ったプログラムA.mをapplication compilerを使ってA.exeを作成して使用しています。
A.exeでは常時フラグを監視しており、
フラグ=1となったらxxx.mのプログラムを流し、処理が完了したらフラグ=0にするという構成になっています。
ほとんどにおいて上記のフローの中でxxx.mは問題なく動いていますが、
ごくたまに”関数xxx.mが未定義です”というエラーが発生します。
その状態でA.exeを再起動しても、エラーは再現しません。
このエラーが発生しないようにするにはどのように対応したらよいでしょうか。
(プログラム作成に使用しているMatlabはR2021a, ランタイムも対応した9.10をインストールしています。)

Réponse acceptée

Kojiro Saito
Kojiro Saito le 10 Sep 2024
MATLAB Runtimeのキャッシュフォルダーが不定期に破損している可能性があります。
Windowsだとキャッシュフォルダーが環境変数TEMPの中の「C:\Users\<ユーザー名>\AppData\Local\Temp\<ユーザー名>\mcrCache9.10」に作られるのですが、Windowsが自動的にファイルを削除する可能性があります。
環境変数「MCR_CACHE_ROOT」を%TEMP%以外のフォルダーに変更してみて実行してみたらいかがでしょうか。
例:コマンドプロンプトで
set MCR_CACHE_ROOT=C:\Work\MCR_Cache
を実行してから
A.exe
を実行する。
  2 commentaires
Makiko
Makiko le 11 Sep 2024
回答ありがとうございます。
例で挙げていただいた変更は
1回実施すればA.exeの再起動やPCの再起動によらず有効なのでしょうか?
Kojiro Saito
Kojiro Saito le 11 Sep 2024
Windowsの環境変数の設定でユーザー環境変数またはシステム環境変数にMCR_CACHE_ROOTを定義した場合は、設定は1度だけでEXEの再起動やPC再起動に依らず有効です。
コマンドプロンプトで設定した場合はそのコマンドプロンプト上から呼び出すプロセスにしか効果が無いので、EXE実行前に毎回実行する必要があります。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur ビッグ データの処理 dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!