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

14 views (last 30 days)
Makiko
Makiko on 10 Sep 2024
Commented: Kojiro Saito on 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をインストールしています。)

Accepted Answer

Kojiro Saito
Kojiro Saito on 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 Comments
Makiko
Makiko on 11 Sep 2024
回答ありがとうございます。
例で挙げていただいた変更は
1回実施すればA.exeの再起動やPCの再起動によらず有効なのでしょうか?
Kojiro Saito
Kojiro Saito on 11 Sep 2024
Windowsの環境変数の設定でユーザー環境変数またはシステム環境変数にMCR_CACHE_ROOTを定義した場合は、設定は1度だけでEXEの再起動やPC再起動に依らず有効です。
コマンドプロンプトで設定した場合はそのコマンドプロンプト上から呼び出すプロセスにしか効果が無いので、EXE実行前に毎回実行する必要があります。

Sign in to comment.

More Answers (0)

Categories

Find more on C 共有ライブラリの統合 in Help Center and File Exchange

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!