如何在运行用mcc编译的exe文件后返回提示符(Matlab编译器)

时间:2014-10-21 20:34:54

标签: matlab dos mcc

我有一个用mcc创建的可执行文件。 .m文件有一个简单的函数,可以读取和绘制值。从DOS运行后,它冻结而不返回执行到DOS。 2个问题: 1)如何将执行返回到dos?我试过"返回"和"退出"命令,但没有帮助 2)如何关闭dos窗口?是使用批处理文件的唯一方法,还是可以使用.m文件中的命令执行此操作? 谢谢 甲

1 个答案:

答案 0 :(得分:2)

有2个scenarii:

如果从DOS窗口运行matlab可执行文件,DOS窗口将无法获得控制权,直到程序终止。如果程序生成matlab数字(情节,冲浪等),程序将不会返回控制台,直到所有数字都关闭。

你可能认为这对于一个简单的情节来说是一种浪费,但毕竟你的数字可能是一个有很多代码要执行的进化gui。甚至是一个带closeRequestFcn的简单数字。因此,在Matlab术语中,只要打开一个数字,你的程序可能仍然有执行指令,因此在确定没有其他事情要做之前它不会返回。

如果您只是双击可执行文件,那么使用您的程序打开的DOS查找控制台将具有相同的行为。在程序返回之前它不会消失(因此,如果相关的话,所有数据都将关闭)。

我不确定linux版本,但如果你在windows上运行,有一种方法可以抑制你的图形应用程序的DOS控制台。查看mcc选项中的-e开关。 当您双击可执行文件时,此开关将以不打开DOS控制台的方式编译您的程序。

总而言之,我建议:

  • 如果您的程序是'命令行'类型(从控制台获取输入并将值返回到该命令行的函数)。 =>使用普通选项进行编译,然后从DOS窗口执行它(一旦程序终止,您就不希望窗口消失。)

  • 如果你的程序是gui 甚至是简单的绘图函数,不需要控制台交互,那么使用-e开关进行编译并双击执行它。 exe文件。

请注意,如果您使用-e开关,建议将潜在输出定向到日志文件。有关详细信息,请查看mcc文档。


修改 如果您确实需要DOS控制台和一些图形输出,请使用以下语法从命令窗口运行程序:

start /b YourProgram 

这将以“后台模式”启动程序(在Linux终端中使用YourProgram & )。您将能够在此控制台窗口中执行任何操作,并且还将看到matlab可执行文件的输出。

这可能令人困惑,因为程序的输出会被添加到简单的dos提示符中,你可能认为你没有控件,但是如果你输入任何命令它就会起作用。您甚至可以通过这种方式启动许多程序并在控制台中保持控制,但所有输出都将到达同一窗口,并且可能难以区分。