




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
晨宇思远的C博客OpenCV学习笔记(2)隐藏 Console 窗口在VC+中使用OpenCV,一般是建立一个 win32 console application 项目,当运行此类程序的时候,默认情况下会有一个类似DOS窗口的console窗口,供程序与用户之间交互之用。但是有时候我们只想在程序中运行一段功能代码,不希望显示这个 console 窗口,而是让代码执行完毕之后程序自动退出。隐藏这种 win32 console application 的 console 窗口,主要有两种方式:1、通过#pragma指令来修改,即在main函数前添加以下一行代码:正确的 #pragmacomment(linker,/subsystem:windows/entry:mainCRTStartup)错误的#pragma comment( linker, /subsystem:/windows/ /entry:/mainCRTStartup/ )2、通过设置项目属性来修改,即在 Project Properties - Configuration Properties Linker - System 的 Subsystem 项中,将 Console (/SUBSYSTEM:CONSOLE) 修改为 Console (/SUBSYSTEM:WINDOWS) ,这样就把控制台程序窗口隐去了。上述方法是通过设置编译器的链接开关来实现的,所以让我们来看一下编译器的链接开关选项(也就是 linker 选项)。一、linker 的 /subsystem 选项:该选项的语法形式如下: /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 Interface (EFI_*):这4种 EFI_* 是和CPU具体架构相关的参数选项,并不常用,有兴趣的可以访问 intel 主页来查看相关内容。 NATIVE:设备驱动器选项,如果 /DRIVER:WDM 选项被设定的话,该链接选项(NATIVE)就为默认选项。 POSIX:在windows NT 种运行在POSIX子系统上的应用程序。 WINDOWS:该类型的应用程序不产生console窗口,程序窗口由用户自己创建,简而言之就是一个标准的 Win32 application,其入口地址为 WinMain()函数或者 wWinMain()函数的地址。如果你在应用程序中定义的主函数为 WinMain 或者 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 开发环境的 Project Properties - Configuration Properties Linker - System 中看到!二、应用程序是如何运行的!我们知道用 VC 编写的程序,运行的时候是需要 C/C+ 运行库支持的。当我们运行一个 C/C+ 程序的时候,链接器会首先寻找应用程序的启动函数,例如:如果你建立了一个 console 程序的话,编译器的链接开关会是以下这种形式: /subsystem:console /entry:mainCRTStartup (ANSI) /subsystem:console /entry:wmainCRTStartuup (UNICODE)如果你建立了一个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:mainCRTStartup;反之,如果你在应用程序中定义了 main 函数的话,默认情况下,你的 /subsystem 开关应该为 /system:console。在默认情况下,/subsystem 和 /entry 开关是匹配的,也就是 console 对应 mainCRTStartup 或者 wmainCRTStartup;windows 对应 WinMain 或者 wWinMain。但是我们也可以通过手动改动的方式使他们不匹配,例如我们可以这样改动: #pragma comment( linker, /subsystem:/windows/ /entry:/mainCRTStartup/ ) / 设置入口地址 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)中手工改动!更多2 上一篇OpenCV 学习笔记(1)安装设置、显示图像 下一篇OpenCV学习笔记(3)用VS2008编译OpenCV2.0源代码(编译错误已解决)主题推荐opencv操作系统编译器控制台windows ce猜你在找全程详解 VS2010+PCL配置C#图片处理之:Gamma校正3*3高斯,BOX,拉普拉斯滤波的实现Windows管道(Pipe)重定向stdout,stderr,stdin空间滤波(四) sobel 算子RAW格式图像转为BMP格式ubuntu上面编译并使用OpenCVpython 网络编程 TCP套接字实例贝叶斯网络(一)纹理特征提取 及LBP纹理特征matlab实现查看评论9楼紫荆飘香V2013-12-17 23:16发表回复不错。8楼g_idea2013-04-02 14:01发表回复cppview plaincopy1. #pragmacomment(linker,/subsystem:windows/entry:mainCRTStartup)Re:long1632013-12-17 18:18发表回复回复g_idea:8楼正解 给力!Re:守候小木屋2014-02-21 10:20发表回复回复long163:解决啦,8楼威武Re:wmmwmm04202013-08-12 20:59发表回复回复g_idea:8楼威武7楼lover_mei2011-10-27 13:58发表回复#pragma comment( linker, /subsystem:/windows/ /entry:/mainCRTStartup/ ) 加了这句 但是运行还是有类似dos命令行窗口Re:ms_yogurt2012-02-16 21:14发表回复回复lover_mei:我也是Re:wmmwmm04202013-08-12 20:57发表回复回复ms_yogurt:我也是。6楼lover_mei2011-10-27 13:52发表回复int main(int argc, char* argv)MessageBox(NULL, hello, Notice, MB_OK);return 0;hello, Notice, 这两个参数导致的问题error C2664: “MessageBoxW”: 不能将参数 2 从“const char 6”转换为“LPCWSTR”请楼主问这样的错误是什么原因呀?Re:邹宇华2011-11-01 17:12发表回复回复lover_mei:你试试强制类型转换或者在用 _T( * ) 的方式5楼shanleo19862009-12-01 09:23发表回复你好,我用的是vc 6.0,请问该怎么设置啊?加上#pragma comment( linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )之后不能通过编译4楼xauatnwpu2009-11-16 19:50发表回复hi, ur introduction is very good.3楼ningjing1192009-10-27 13:11发表回复"将 Console (/SUBSYSTEM:CONSOLE) 修改为 Console (/SUBSYSTEM:WINDOWS)",但是默认选项是WINDOWS (/SUBSYSTEM:WINDOWS)",选用后出现2楼说的情况;手动修改成"Console (/SUBSYSTEM:WINDOWS)"系统不认Re:邹宇华2009-10-27 16:17发表回复如果默认是WINDOWS (/SUBSYSTEM:WINDOWS),可能是你建立的不是 Win32 Console 项目哦。Re:wmmwmm04202013-08-12 21:01发表回复回复chenyusiyuan:遇到同样的问题2楼ytycn2009-10-13 14:17发表回复引用举报你好 /请问为何我在vs2008中不能像你说的设置呢1>- Build started: Project: Hello, Configuration: Debug Win32 -1>Compiling.1>Hello.cpp1>d:/opencv2.0/include/opencv/cvcompat.h(803) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss1>Linking.1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function _tmainCRTStartup1>C:/我的文档/Visual Studio 2008/Projects/openCV/Hello/Debug/Hello.exe : f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030城市交通产业行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030国内小家电行业深度分析及竞争格局与发展前景预测研究报告
- 2025-2030固体饮料行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030压铸模市场投资前景分析及供需格局研究研究报告
- 2025-2030卫衣产业政府战略管理与区域发展战略研究咨询报告
- 办公租赁托管合同标准文本
- 2025-2030医疗养老行业发展分析及投资战略研究报告
- 2025-2030剃须刀市场行业市场现状供需分析及投资评估规划分析研究报告
- 小学生数学期末考核测验(四年级下册)
- 一年级语文下册期末考试(真题)
- 移动餐车租赁合同
- 人教版七年级数学下册《二元一次方程组》优质课说课课件
- 食用菌资源的开发及利用
- 幼儿园绘本故事:《再见电视机》 课件
- 光伏发电工程施工组织设计新编样本
- 三.国际法习题之经典案例分析
- 中国传媒大学-舆论学原理、方法与应用-课件-第一章 舆论传播的源与流
- 水下混凝土浇筑导管水密试验
- 市政工程监理规划范本(完整版)
- 污水处理站运行维护管理方案
- 小学生气象科普知识ppt课件
评论
0/150
提交评论