- 浏览: 93117 次
- 性别:
- 来自: 北京
文章分类
操作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点由连接程序设置,
不同的连接器选择的入口函数也不尽相同。在VC++下,连接器对控制台程序设置的入口函数是 mainCRTStartup,
mainCRTStartup 再调用main 函数;对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup,
WinMainCRTStartup 调用你自己写的 WinMain 函数。具体设置哪个入口点是由连接器的“/subsystem:”
选项确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方式:CONSOLE|WINDOWS|NATIVE|POSIX。
如果这个选项参数的值为 WINDOWS,则表示该应用程序运行时不需要控制台,有关连接器参数选项的详细说明请参考 MSDN 库。
以下四种组合,可以实现console和windows模式的混合,可以达到不弹出DOS窗口的效果,
也可以达到在Windows程序中向控制台输出printf信息的目的。
#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// ...
}
int main(void)
{
// ...
}
1,上面的意思就是如果你想弹出Dos窗口的话,就调用
#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )
这两个其中之一,具体哪个看你源代码的入口是main还是WinMain了。
如果你不想弹出Dos窗口的话,对exe调用可执行jar文件非常有用,就调用
#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
这两个其中之一,具体还是看你源代码的入口是main还是WinMain了。
2,exe启动jar文件,模仿eclipse.exe文件
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
#include <stdlib.h>
#include <Windows.h>
int main(){
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
TCHAR szCommandLine[] = TEXT("javaw -jar TT2012.jar");
CreateProcess(NULL, szCommandLine, NULL, NULL,
FALSE, 0, NULL, NULL, &si, &pi);
return EXIT_SUCCESS;
}
不同的连接器选择的入口函数也不尽相同。在VC++下,连接器对控制台程序设置的入口函数是 mainCRTStartup,
mainCRTStartup 再调用main 函数;对图形用户界面(GUI)程序设置的入口函数是 WinMainCRTStartup,
WinMainCRTStartup 调用你自己写的 WinMain 函数。具体设置哪个入口点是由连接器的“/subsystem:”
选项确定的,它告诉操作系统如何运行编译生成的.EXE文件。可以指定四种方式:CONSOLE|WINDOWS|NATIVE|POSIX。
如果这个选项参数的值为 WINDOWS,则表示该应用程序运行时不需要控制台,有关连接器参数选项的详细说明请参考 MSDN 库。
以下四种组合,可以实现console和windows模式的混合,可以达到不弹出DOS窗口的效果,
也可以达到在Windows程序中向控制台输出printf信息的目的。
#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// ...
}
int main(void)
{
// ...
}
1,上面的意思就是如果你想弹出Dos窗口的话,就调用
#pragma comment( linker, "/subsystem:console /entry:mainCRTStartup" )
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup" )
这两个其中之一,具体哪个看你源代码的入口是main还是WinMain了。
如果你不想弹出Dos窗口的话,对exe调用可执行jar文件非常有用,就调用
#pragma comment( linker, "/subsystem:windows /entry:WinMainCRTStartup" )
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
这两个其中之一,具体还是看你源代码的入口是main还是WinMain了。
2,exe启动jar文件,模仿eclipse.exe文件
#pragma comment( linker, "/subsystem:windows /entry:mainCRTStartup" )
#include <stdlib.h>
#include <Windows.h>
int main(){
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
TCHAR szCommandLine[] = TEXT("javaw -jar TT2012.jar");
CreateProcess(NULL, szCommandLine, NULL, NULL,
FALSE, 0, NULL, NULL, &si, &pi);
return EXIT_SUCCESS;
}
发表评论
-
Java对象引用类型
2013-05-09 09:55 969Java对象的引用类型分为强引用、软引用、弱引用和虚应用 强引 ... -
JVM调优大纲
2013-05-07 19:07 1775我觉得处理JVM调优问题需要以下五个步骤: ... -
diango创建数据异常no module named base
2013-05-05 22:02 1596本人使用django创建web项目使用的数据库是sqlite3 ... -
hibernate根据hbm自动生成数据库
2013-04-27 10:26 1069今天碰到一个很老的项目,只有hbm文件没有数据库,想根 ... -
这几年收集的java相关资料
2013-04-06 14:46 614以下是我搜集的java相关资料,有需要的可以联系我,QQ470 ... -
很诡异的一个hibernate问题
2012-12-27 09:39 297在一个service里写了如下一段代码: List<Gr ... -
理解编译型编程语言心得
2012-11-01 14:11 7761,编译型语言,像c和c++都是,在源代码成为 ... -
Linux安装jdk详解
2012-10-22 16:34 7581,下载JDK,肯定官网下载,有多种类型,源码包、bin包、r ... -
(转)Linux设备命名规则
2012-10-19 15:21 1108在我们使用的计算机中 ... -
Windows编程之钩子程序
2012-10-15 09:20 21251,钩子(Hook),是Windows消息处理机制的一个平台, ... -
(转)编程竞赛的几个在线提交系统
2012-10-12 14:28 1057下面是几个比较大的在线提交系统(Online Judge)里面 ... -
从编程的角度理解操作系统及其软件设计
2012-10-11 10:58 936我们都知道操作系统是装在计算机上的,所有的计算 ... -
(转)世界上的操作系统认识
2012-10-10 10:41 75025款操作系统全面接触http://tech.163.com/ ... -
Linux系统的运行级别
2012-09-29 15:21 954Linux系统有7个运行级别(runlevel) 运行级别0: ... -
C语言各种编译器的清屏方法
2012-09-28 11:04 31421,vs/vc:vs本身并没有提供专用清屏的函数,但是清屏被作 ... -
C语言实现学生信息管理的增删改查
2012-09-28 10:42 5978刚开始,我用eclipse编写的,编译器使用的是gcc ... -
回车符和换行符的区别
2012-09-27 18:34 990回车符号和换行符号产生背景: 在计算机还没 ... -
C语言标准函数库IO处理分析
2012-09-26 16:25 944IO处理函数都在stdio.h头 ... -
C语言标准函数库动态内存分配和释放分析
2012-09-25 11:14 11101,动态内存分配需要程序员手动来释放获得的内存 2,内存分配和 ... -
C语言标准函数库产生随机数分析
2012-09-25 10:47 9301,是伪随机,不是真正的随机,伪随机的特点就是根据种子值+公式 ...
相关推荐
1.3.1 字符模式 1.3.2 Windows对应程序 1.3.3 头文件 1.3.4 程序入口 1.3.5 MessageBox函数 1.3.6 编译、链接及运行 第2章Unicode简介 2.1 字符集简史 2.1.1 美国标准 2.1.2 美国以外的世界 2.1.3 扩展ASCII 2.1.4 ...
1.3.4 程序入口点 1.3.5 messagebox 函数 1.3.6 编译、链接和运行 第二章 unicode简介 2.1 字符集简史 . 2.1.1 美国标准 2.1.2 国际方面 2.1.3 扩展ascll 2.1.4 双字书字符集 2.1.5 ...
《MFC Windows程序设计电子书》是一份涵盖了MFC(Microsoft Foundation Classes)在Windows平台下进行应用程序开发的详细教程。MFC是微软提供的一套C++类库,它基于面向对象编程思想,为开发者提供了构建Windows应用...
传统的Windows程序入口点是`WinMain`函数,但在MFC程序中,这个函数被MFC库封装起来了。实际上,MFC会自动处理`WinMain`的调用。`WinMain`函数在`APPMODUL.CPP`中通过`_tWinMain`宏(支持Unicode)间接调用,其主要...
Windows程序设计是C语言学习过程中的一个重要部分,涉及到Windows操作系统下的软件开发。本资料"15天学习C语言Windows程序设计"是一份专注于Windows平台下使用C语言进行程序设计的学习材料。 在Windows平台上,...
在PE(Portable Executable)格式的Windows可执行文件中,程序入口点是一个特殊的地址,指示操作系统在加载程序时应该从哪里开始执行。通常,这个位置包含了恶意软件的初始执行逻辑,而这些逻辑可能会被反病毒软件...
2. **应用程序框架**:如何使用CWinApp类作为应用程序的入口点,以及如何使用框架管理应用程序的生命周期。 3. **文档/视图架构**:这是MFC的核心设计模式,用于处理数据和用户界面的分离。CDocument、CView、...
- **WinMain函数详解**:深入讲解了作为Windows程序入口点的`WinMain`函数的具体作用及其参数的意义。 - **窗口类注册与创建**:详细介绍了如何通过`WNDCLASS`结构体定义窗口类,并通过`RegisterClass`函数进行注册...
Windows程序的基础扫盲主要涉及的是Windows图形用户界面(GUI)编程,尤其是如何使用API函数创建GUI程序。在Windows编程中,GUI程序的核心部分包括窗口类的登记、主窗口的创建以及消息循环的实现。下面将详细解释...
Windows Presentation Foundation(WPF)是一种用于构建Windows客户端应用程序的技术框架,它提供了丰富的功能来创建各种类型的用户界面。WPF应用程序的入口是理解和开发此类应用程序的关键部分之一。 #### App....
MFC Windows程序设计是一门深度探讨如何利用MFC进行高效编程的技术领域,这门学科涵盖了Windows编程的基本原理、MFC框架的结构以及如何通过MFC实现各种窗口、控件和对话框。 在MFC中,主要的知识点包括: 1. **MFC...
《MFC Windows程序设计》是一本深入探讨Microsoft Foundation Classes (MFC)库和Windows应用程序开发的专业书籍。MFC是微软提供的一套C++类库,它封装了Windows API,使得用C++编写Windows应用程序变得更加方便和...
《Windows程序设计》是Charles Petzold的经典之作,尽管出版于1999年,但至今仍然是新手学习Windows平台下C语言编程的首选教材。这本书深入浅出地讲解了如何利用Windows API函数来构建应用程序,尤其对于理解Windows...
《MFC Windows程序设计(第二版)(中文版)》是一本深入探讨Microsoft Foundation Classes (MFC)库的书籍,用于构建Windows应用程序。MFC是微软为C++开发者提供的一套类库,它封装了Windows API,使得开发人员可以更加...
MFC将Windows程序设计的各种概念和对象抽象成了一系列的C++类,如CWinApp、CWnd、CFrameWnd等,使得开发者可以使用面向对象的方式来设计和实现应用程序。 2. **CWinApp类**:MFC程序的核心是CWinApp类,它是每个MFC...
根据提供的信息,我们可以详细探讨五种常用编程语言的程序入口特征。这五种语言包括:C++(使用Microsoft Visual C++ 6.0)、Delphi(使用Borland Delphi 6.0-7.0)、VB(使用Microsoft Visual Basic 5.0/6.0)、BC+...
《Windows程序设计》第二版是由王艳萍和张静合著的一本经典教材,主要针对想要深入理解Windows操作系统内部机制并进行系统级编程的读者。这本书涵盖了Windows API的使用、进程与线程管理、内存管理、文件系统、窗口...
以上介绍了Windows程序设计中非常基础但重要的两个方面:程序入口函数`WinMain`和窗口类别的注册`RegisterClass`。通过这些基础知识点的学习,初学者可以进一步探索Windows编程的更多细节和技术。
**MFC Windows程序设计** MFC,全称Microsoft Foundation Classes,是微软提供的一套C++类库,用于简化Windows应用程序的开发。它基于面向对象的编程思想,将Windows API封装成易于使用的C++类,使得开发者能更高效...