带dos调试窗口的win32程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带dos调试窗口的win32程序相关的知识,希望对你有一定的参考价值。

#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")

 

 

方法只要
在cpp文件头部加入一行:

#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
//以console程序样式,并且制定winmain的入口.
此位置在系统.h的后面。如放在:stdafx.h的后面就可以。

不管是vc6还是.net都可以。

如果link无效,需要替换WinMainCRTStartup

入口函数有:
mainCRTStartup
wmainCRTStartup
wWinMainCRTStartup
WinMainCRTStartup
---------------------
在vc2005中的mfc和sdk 程序的入口不同。mfc的入口为WinMainCRTStartup。sdk程序的入口为:wWinMainCRTStartup。

vc6的入口都是WinMainCRTStartup。
以上请大家注意。


在使用printf语句之前记得把stdio.h的头文件包含进去.就可以.实现这个有趣的程序.其实在调试一些大型的win32 gui程序的时候这个dos窗口相当的有用.

反过来.你在console工程中加入
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置console的入口地址和gui样式.
dos窗口就消失了.之会显示像 MessageBox之类的gui窗体.

这些link选项最后都会填写到PE头文件的Subsystem节中里面只需要把03(console模式,WINDOWS_CUI=3)该为02(WINDOWS_GUI=2).简单点使用修改pe头文件的工具直接修改就可以使gui程序中的printf函数生效.


一般放在#include "stdafx.h"的后面,才有效
sdk:
#pragma comment( linker, "/subsystem:\"console\" /entry:\"wWinMainCRTStartup\"")
#pragma comment( linker, "/subsystem:console /entry:wWinMainCRTStartup")

mfc:
#pragma comment( linker, "/subsystem:\"console\" /entry:\"WinMainCRTStartup\"")
#pragma comment( linker, "/subsystem:console /entry:WinMainCRTStartup")
实际编程上面的应用的sdk程序中

http://blog.csdn.net/xhhjin/article/details/6658941

以上是关于带dos调试窗口的win32程序的主要内容,如果未能解决你的问题,请参考以下文章

vs 开发 win32 程序,调出控制台窗口,方便调试

求写一个win32api的c语言创建窗口的程序。要最简单的,带注释谢谢。

一文带你熟悉DOS命令操作,CMD从此不再是路人!!

Win32 Application和Win32 Console Application区别

Win32 C++ 在类中创建窗口和过程

vc++ 6.0里面的win32 console application是啥意思