去掉MATLAB编译产生的可执行图形界面程序运行时的DOS黑窗口的一种方法
2004-08-03 01:13
926 查看
来源:http://www.simwe.com/cgi-bin/ut/topic_show.cgi?id=36244&h=1&bpg=2&age=-1
写在前面的话:
最近论坛上原创气氛比较高,大家都纷纷拿出自己的看家本领,或者如饥似渴地学习新东西以解决大家在实际使用matlab时遇到的一些棘手问题。我个人觉得这是一个以技术性讨论为主的论坛健康发展所应该看到的现象。这种现象对大家都是有益的,无论是发贴的,还是看贴的,都会获得一些收获。对于我来说,把自己的业余时间花在浏览这样的论坛以及参与其中的讨论,我不会后悔。网络上论坛不少,但是有特色的不多,而且注重技术讨论的论坛更少,希望大家继续保持这样的热情,希望simwe变得更好。
正文:
最近论坛的一个问题是如何去掉在MATLAB李编译生成的可知行文件在运行的时候所产生的那个黑色的窗口。这种现象主要是指在Windows平台。比如在附图中出现的左边那个黑色背景的窗口。在这个例子里,可知行文件名为:myapp01.exe,它是从MATLAB程序myapp01.m编译得到的。在MATLAB里,myapp01.m是一个简单的GUI程序,界面上有两个按钮和一个图形。
如何在MATLAB里编译这里不讨论,得到那个myapp01.exe以后,如果运行的话,就会出现如附图所示的黑色窗口。关于如何去掉那个黑色窗口,现在来说MathWorks公司还没有什么好的办法。民间流传着几种方法:比如,这里的SCIE同学提出的修改MATLAB在编译该可知行文件的过程中所产生的C/C++原文件的方式已达到去掉那个黑色窗口的方法。另外,在MathWorks的网站也有人提出用免费的工具NSIS来***另外一个可执行文件,它可以启动我们的可执行文件比如myapp01.exe,但不会出现那个黑色的窗口。
其实,如果只是简单的取出那个黑色窗口可能并不是件好事,因为那个窗口有时也显示一些有用的信息,比如程序运行时产生的一些错误信息,或者程序也可以利用它来产生一些运行当中的信息(用disp()函数)。
我在这里提供另外一种方法,就是用事先写好的一个软件,来运行由MATLAB编译生成的可执行文件比如myapp01.exe。myapp01.exe在运行当中所产生的一些信息也可以在这个loader软件里被捕捉并显示。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
所需文件在附件中,其中包括
1。WgLoader.exe ---- 启动程序,可运行于Windows NT/2000/XP,但可能无法运行在Windows 98/Me. 解压到任何路径都行
2. myapp01.zip ---- MATLAB所编译得到的可执行文件和必要的支持文件,解压到任何路径都行。
附件
WgLoader运行后的界面如下:图中有使用说明。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
比如,我把myapp01.exe解压缩到c:/temp目录,那么WgLoader可以这样设定,
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
启动myapp01以后,可以点选“Start”按钮,结果可以得到一个简单的图形。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
听cwit说过,MATLAB的legend函数在编译后会有问题,我以前没有注意到这个问题,所以在myapp01里专门加了一个legend调用,不过编译以后没有发现问题,而且编译后的legend的操作也正常,比如可以用鼠标拖拉到别的地方。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
写在前面的话:
最近论坛上原创气氛比较高,大家都纷纷拿出自己的看家本领,或者如饥似渴地学习新东西以解决大家在实际使用matlab时遇到的一些棘手问题。我个人觉得这是一个以技术性讨论为主的论坛健康发展所应该看到的现象。这种现象对大家都是有益的,无论是发贴的,还是看贴的,都会获得一些收获。对于我来说,把自己的业余时间花在浏览这样的论坛以及参与其中的讨论,我不会后悔。网络上论坛不少,但是有特色的不多,而且注重技术讨论的论坛更少,希望大家继续保持这样的热情,希望simwe变得更好。
正文:
最近论坛的一个问题是如何去掉在MATLAB李编译生成的可知行文件在运行的时候所产生的那个黑色的窗口。这种现象主要是指在Windows平台。比如在附图中出现的左边那个黑色背景的窗口。在这个例子里,可知行文件名为:myapp01.exe,它是从MATLAB程序myapp01.m编译得到的。在MATLAB里,myapp01.m是一个简单的GUI程序,界面上有两个按钮和一个图形。
如何在MATLAB里编译这里不讨论,得到那个myapp01.exe以后,如果运行的话,就会出现如附图所示的黑色窗口。关于如何去掉那个黑色窗口,现在来说MathWorks公司还没有什么好的办法。民间流传着几种方法:比如,这里的SCIE同学提出的修改MATLAB在编译该可知行文件的过程中所产生的C/C++原文件的方式已达到去掉那个黑色窗口的方法。另外,在MathWorks的网站也有人提出用免费的工具NSIS来***另外一个可执行文件,它可以启动我们的可执行文件比如myapp01.exe,但不会出现那个黑色的窗口。
其实,如果只是简单的取出那个黑色窗口可能并不是件好事,因为那个窗口有时也显示一些有用的信息,比如程序运行时产生的一些错误信息,或者程序也可以利用它来产生一些运行当中的信息(用disp()函数)。
我在这里提供另外一种方法,就是用事先写好的一个软件,来运行由MATLAB编译生成的可执行文件比如myapp01.exe。myapp01.exe在运行当中所产生的一些信息也可以在这个loader软件里被捕捉并显示。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
所需文件在附件中,其中包括
1。WgLoader.exe ---- 启动程序,可运行于Windows NT/2000/XP,但可能无法运行在Windows 98/Me. 解压到任何路径都行
2. myapp01.zip ---- MATLAB所编译得到的可执行文件和必要的支持文件,解压到任何路径都行。
附件
WgLoader运行后的界面如下:图中有使用说明。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
比如,我把myapp01.exe解压缩到c:/temp目录,那么WgLoader可以这样设定,
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
启动myapp01以后,可以点选“Start”按钮,结果可以得到一个简单的图形。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
听cwit说过,MATLAB的legend函数在编译后会有问题,我以前没有注意到这个问题,所以在myapp01里专门加了一个legend调用,不过编译以后没有发现问题,而且编译后的legend的操作也正常,比如可以用鼠标拖拉到别的地方。
document.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>
相关文章推荐
- golang编译程序从后台运行,不出现dos窗口
- C程序编译调试运行之后,执行窗口闪一下就消失了
- PHP执行shell脚本运行程序不产生core文件的方法
- vc++生成程序不需要.net运行环境的可以执行exe程序的方法
- C#一种变通的程序与窗口使用同一图标资源的方法
- VS2013+opencv3.0+QT5.7编译ok但是运行产生0xc000007b错误的解决方法
- JAVA程序dos下编译与运行
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。问题的解决方法!
- CGYWIN 编译的可执行程序在WINDOWS平台中运行时,解决system函数不能使用的问题
- ubuntu 下gnome 程序序的一种编译方法
- 运行可执行程序时提示文件不存在解决方法
- 初学者dos界面编译运行Java程序
- XCode写简单程序不建project用terminal编译执行的方法
- CAD调试时抛出“正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码”异常的解决方法
- 基于Android arm64 可执行程序的编译运行
- matlab GUI程序转换成可执行文件的方法
- 如何编译可以在arm平台上运行的可执行程序?
- Visual Studio 2005 编译程序不能运行的解决方法
- GDB arm-linux交叉编译移植和使用方法(特别是对于正在运行的程序或者段错误的程序进行分析)
- VC++2005编译出程序在XP下执行出错的解决方法