VS嵌入QT后-建立QT工程后printf和cout无效-无法产生控制台应用程序窗口-需设置工程属性(共4页).docx

上传人:飞****2 文档编号:14447417 上传时间:2022-05-04 格式:DOCX 页数:4 大小:66.05KB
返回 下载 相关 举报
VS嵌入QT后-建立QT工程后printf和cout无效-无法产生控制台应用程序窗口-需设置工程属性(共4页).docx_第1页
第1页 / 共4页
VS嵌入QT后-建立QT工程后printf和cout无效-无法产生控制台应用程序窗口-需设置工程属性(共4页).docx_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《VS嵌入QT后-建立QT工程后printf和cout无效-无法产生控制台应用程序窗口-需设置工程属性(共4页).docx》由会员分享,可在线阅读,更多相关《VS嵌入QT后-建立QT工程后printf和cout无效-无法产生控制台应用程序窗口-需设置工程属性(共4页).docx(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上在VC+中使用OpenCV,一般是建立一个 win32 console application 项目,当运行此类程序的时候,默认情况下会有一个类似DOS窗口的console窗口,供程序与用户之间交互之用。但是有时候我们只想在程序中运行一段功能代码,不希望显示这个 console 窗口,而是让代码执行完毕之后程序自动退出。隐藏这种 win32 console application 的 console 窗口,主要有两种方式:1、通过#pragma指令来修改,即在main函数前添加以下一行代码: #pragma comment( linker, /subsystem:/w

2、indows/ /entry:/mainCRTStartup/ )2、通过设置项目属性来修改,即在 Project Properties - Configuration Properties Linker - System 的 Subsystem 项中,将 Console (/SUBSYSTEM:CONSOLE) 修改为 Console (/SUBSYSTEM:WINDOWS) ,这样就把控制台程序窗口隐去了。上述方法是通过设置编译器的链接开关来实现的,所以让我们来看一下编译器的链接开关选项(也就是 linker 选项)。一、linker 的 /subsystem 选项:该选项的语法形式如下:

3、 /SUBSYSTEM:CONSOLE | EFI_APPLICATION | EFI_BOOT_SERVICE_DRIVER | EFI_ROM | EFI_RUNTIME_DRIVER | NATIVE | POSIX | WINDOWS | WINDOWSCE ,major.minor这个链接选项告诉操作系统如何运行可执行文件。 CONSOLE:win32 字符模式应用程序,此种类型的应用程序在运行的时候会产生一个类似DOS窗口的控制台窗口。如果在应用程序的主函数为 main() 或者 wmain(),在默认情况下该应用程序就是一个控制台应用程序。 Extensible Firmware

4、 Interface (EFI_*):这4种 EFI_* 是和CPU具体架构相关的参数选项,并不常用,有兴趣的可以访问 intel 主页来查看相关内容。 NATIVE:设备驱动器选项,如果 /DRIVER:WDM 选项被设定的话,该链接选项(NATIVE)就为默认选项。 POSIX:在windows NT 种运行在POSIX子系统上的应用程序。 WINDOWS:该类型的应用程序不产生console窗口,程序窗口由用户自己创建,简而言之就是一个标准的 Win32 application,其入口地址为 WinMain()函数或者 wWinMain()函数的地址。如果你在应用程序中定义的主函数为 W

5、inMain 或者 wWinMain,在默认情况下该应用程序就是一个Win32 Application ! WINDOWSCE:运行在 windows CE 上的应用程序。 major and minor (optional):主版本号和次版本号,该选项为可选,该选项为065535之间的十进制整数。从上面可以看出,如果我们建立一个 win32 console application 的话,linker 的 /subsystem 选项应该为CONSOLE,可以在 VC6 开发环境的 project-setting-link-project option 或者 VS2005/2008 开发环境的

6、Project Properties - Configuration Properties Linker - System 中看到!二、应用程序是如何运行的!我们知道用 VC 编写的程序,运行的时候是需要 C/C+ 运行库支持的。当我们运行一个 C/C+ 程序的时候,链接器会首先寻找应用程序的启动函数,例如:如果你建立了一个 console 程序的话,编译器的链接开关会是以下这种形式: /subsystem:console /entry:mainCRTStartup (ANSI) /subsystem:console /entry:wmainCRTStartuup (UNICODE)如果你建立

7、了一个win32 application,编译器的链接开关则会是以下形式: /subsystem:windows /entry:WinMain (ANSI) /sbusystem:windows /entry:wWinMain (UINCODE)上面的两种形式可以在 Project Properties - Configuration Properties Linker - System (VS2005/08)中看到,其中的 subsystem 和 entry 并不需要都设置,如果你只设置了 /subsystem:console 的话,那么默认的 entry 开关应为 /entry:mainC

8、RTStartup;反之,如果你在应用程序中定义了 main 函数的话,默认情况下,你的 /subsystem 开关应该为 /system:console。在默认情况下,/subsystem 和 /entry 开关是匹配的,也就是 console 对应 mainCRTStartup 或者 wmainCRTStartup;windows 对应 WinMain 或者 wWinMain。但是我们也可以通过手动改动的方式使他们不匹配,例如我们可以这样改动: #pragma comment( linker, /subsystem:/windows/ /entry:/mainCRTStartup/ ) /

9、 设置入口地址 int main(int argc, char* argv) MessageBox(NULL, hello, Notice, MB_OK); return 0; 在默认情况下,链接器看到 /subsystem 下是 windows 选项的时候,它会自动寻找 WinMain 或者 wWinMain,但我们强制指定入口地址,这样运行程序的时候默认的console窗口就会隐藏!上面是在代码中使用 #pragma 指令来设置,还有一种就是直接在开发环境的Project Properties - Configuration Properties Linker - System (VS2005/08)中手工改动!专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com