去掉MATLAB编译产生的可执行图形界面程序运行时的DOS黑窗口的一种方法

本文围绕MATLAB编译生成的可执行文件在Windows平台运行时产生的黑色窗口展开。介绍了民间流传的去除黑窗口方法,如修改C/C++原文件、用NSIS工具等。同时作者提供了用事先写好的软件运行可执行文件的方法,还给出所需文件及使用示例,此外提到MATLAB legend函数编译后操作正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来源: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软件里被捕捉并显示。

click for full sizedocument.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运行后的界面如下:图中有使用说明。

click for full sizedocument.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可以这样设定,

click for full sizedocument.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0>

启动myapp01以后,可以点选“Start”按钮,结果可以得到一个简单的图形。

click for full sizedocument.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的操作也正常,比如可以用鼠标拖拉到别的地方。

click for full sizedocument.body.clientWidth-300) {this.height=(document.body.clientWidth-300)*this.height/this.width;this.width=document.body.clientWidth-300}" border=0> 


微型16/32位嵌入式GUI,自主开发,历四年左右,拥有全部版权. http://www.ecgui.com 体积小巧 大小在 100KB~180KB! 特性: 多窗口支持| 完全中文输入/显示| 多数常用GUI控件| 99.9% ANSI C 编写| 已成功移植 DOS,Linux,uc/OS-II| 组件式 API(易用,高效) GUI SDK-Green for DOS Beta 开发包下载 305 KB 火热下载中 http://ecurb2006.googlepages.com/sdk-green-4dos.zip 演示程序下载 264 KB http://ecurb2006.googlepages.com/demo.zip 微型嵌入式GUI编程指南 PDF 下载 349 KB http://ecurb2006.googlepages.com/embeddedguiprogrammingguide.pdf GUI SDK For Windows Beta 开发包下载 583 KB http://ecurb2006.googlepages.com/sdk4win.zip 包含详细使用说明 部分应用程序 截图 记事本 http://ecurb2006.googlepages.com/edit.jpg 计算器 http://ecurb2006.googlepages.com/calc.jpg 画笔 http://ecurb2006.googlepages.com/painter.zip 支持控件 MAINWINDOW 主窗口 DLGWINDOW 对话框窗口,从属于主窗 BUTTON 按钮 MAINMENU 下拉式菜单 POPMENU 弹出式菜单 HSCROLLBAR 横向滚动条 VSCROLLBAR 竖向滚动条 TEXTBOX 单行文本编辑框 EDITBOX 多行文本编辑框 COMBOBOX 组合框 LISTBOX 列表框 CHECKBOX 多项选择框 CHOICEBOX 单项选择框 LABEL 文字标签 PAGEVIEW 标签页 SPEEDBAR 进度条 商业使用,将提供 GUI 全部源代码,低价授权策略,并提供 GUI 移植技术支持! 请联系 sales@ecurb2006.com 更多信息请访问 http://www.ecurb2006.com 针对 不少网友开发免费 DOS 软件的想法,现在提供 DOS 下的开发库,个人或者组织可以开发公共使用的免费软件,借这个机会,也希望能更好的推广这个 GUI.会在程序显示区域头部显示 GUI 的介绍性信息(无其他无关信息)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值