1

MATLAB の配布ツールを使用して、mex ライブラリを使用する単純なプロジェクトをコンパイルしています。実行可能ファイルは正常に実行され、終了するはずのときに何も起こらないことを除いて、本来の処理を実行します。そこに座っているだけです。

ドキュメントの魔方陣の例など、他のプロジェクトをコンパイルすると、問題なく動作します。実行可能ファイルが終了して終了します。

.m ファイルの最後にa を追加しましたdisp('at end');が、この行は実際に表示されているので、.m ファイルの最後に達したことはわかっていますが、プロセスを終了しません。

なぜこれが起こるのですか?


編集:

MATLAB では通常どおり実行され、'at end'. ここに含めるにはコードが長すぎます。mex ライブラリを使用する以外は、かなり通常の処理を行います。

4

1 に答える 1

4

質問には多くの詳細はありませんが、次の 2 つの可能性があります。

  1. 実行の最後に Figure ウィンドウが表示されます。コンパイルされたアプリケーションは、すべての Figure ウィンドウが終了するのを待ってから終了します。関数mclWaitForFiguresToDieについては、MATLAB Compiler のドキュメントを参照してください。

  2. どういうわけか、MEX ライブラリは組み込み関数waitforcallbacksを呼び出しています。これにより、「waitforcallbacks(false) が呼び出されるまでアプリケーションが終了しなくなります」。また、(waitforcallbacks のヘルプから)次の点にも注意してください。

于 2009-11-23T22:16:02.357 に答える