1

我正在使用 MATLAB 的部署工具来编译一个使用 mex 库的简单项目。可执行文件运行正常并执行它应该做的事情,除了当它应该完成时,什么都没有发生。它只是坐在那里。

当我编译任何其他项目时,例如文档中的魔方示例,它工作正常。可执行文件完成并退出。

disp('at end');在 .m 文件的末尾添加了一个,并且确实显示了这一行,所以我知道它到达了 .m 文件的末尾,但它只是没有退出该过程。

为什么会这样?


编辑:

在 MATLAB 中它正常运行,在'at end'. 代码太长了,这里就不放了。除了使用 mex 库之外,它还做了相当正常的事情。

4

1 回答 1

4

问题中没有太多细节需要考虑,但这里有两种可能性:

  1. 执行结束时有可见的图形窗口。已编译的应用程序将在退出之前等待所有图形窗口终止。请参阅函数mclWaitForFiguresToDie的 MATLAB 编译器文档。

  2. 不知何故,MEX 库正在调用内置函数waitforcallbacks,这将“阻止应用程序退出,直到调用 waitforcallbacks(false)”。另请注意(来自 waitforcallbacks 的帮助):“调用 waitforcallbacks 嵌套。waitforcallbacks(false) 的调用次数必须与已部署的应用程序退出的 waitforcallbacks(true) 调用次数相同。”

于 2009-11-23T22:16:02.357 回答