话就不多说了,你一定能看懂。这里运行时库一定要指定为"多线程/MT",否则最后Release版本的程序在其他机器上无法运行. 命令行 /MT 或 这里指定自定义入口函数名 命令行 /entry:Start 或 //Win32控制台程序 //---------------------------------------------- //stdafx.h file //---------------------------------------------- #pragma once
#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0501 #endif
#include <Windows.h>
//---------------------------------------------- //console.cpp //----------------------------------------------
#include " stdafx.h " HANDLE hStdIn; HANDLE hStdOut; BOOL __stdcall CtrlHandler(DWORD CtrlType) { if (CtrlType == CTRL_C_EVENT || CtrlType == CTRL_BREAK_EVENT) CloseHandle(hStdIn); return TRUE; } void Start() { hStdIn = GetStdHandle(STD_INPUT_HANDLE); hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleMode(hStdIn,ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_PROCESSED_INPUT); SetConsoleCtrlHandler(CtrlHandler,TRUE); HANDLE hHeap = GetProcessHeap(); PVOID szBuffer = HeapAlloc(hHeap, HEAP_ZERO_MEMORY, 1024 ); DWORD dwBytesRead,dwBytesWrite; while (TRUE){ if ( ! ReadConsole(hStdIn,szBuffer, 1024 , & dwBytesRead,NULL) || (( char * )szBuffer)[ 0 ] == ' q ' ) break ; WriteConsole(hStdOut,szBuffer,dwBytesRead, & dwBytesWrite,NULL); } HeapFree(hHeap,HEAP_NO_SERIALIZE,szBuffer); ExitProcess( 0 ); }//Windows程序 //---------------------------------------------------- //stdafx.h //---------------------------------------------------- #ifndef WINVER #define WINVER 0x0501 #endif
#ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0501 #endif
#ifndef _WIN32_WINDOWS #define _WIN32_WINDOWS 0x0410 #endif
#ifndef _WIN32_IE #define _WIN32_IE 0x0600 #endif
#define WIN32_LEAN_AND_MEAN
#include <Windows.h> //---------------------------------------------------- // winapp.cpp //----------------------------------------------------
#include " stdafx.h " void __stdcall Start() { MessageBoxA(NULL, " Hello World! " , " ? " ,MB_OK); ExitProcess( 0 ); }// Release版本 //制作Win32 - DLL文件的方法与前面相同 以上仅使用Windows标准库,最后生成的程序只有 3KB大小,基本上和汇编写的程序大小差不多了. 如果要再小点,我们可以把 只读数据、导入表以及导出表节.rdata与代码节.text合并。(这里提到的节区是以VC编译器为准,不同的编译器对节的命名也许会有些不同) 连接器命令行添加 /merge:.rdata=.text 或 现在再看看大小 :( 2KB 了。
用VS2005也能制作体积很小的Win32程序(2KB - 3KB)
最新推荐文章于 2022-12-26 01:56:08 发布