如何在VC下生成最小的EXE文件(<24K),我发现/O1的效果不是很明显,尝试写个CONSOLE程序
void main()
{
}
一条语句也没有Release版本时生成的EXE就有24K,GUI的也一样
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
return 0;
}
生成的EXE也24K,但此时使用ASPACK可以生成更小的EXE,各位高手有办法使直接生成的EXE最小吗?

解决方案 »

  1.   

    #pragma comment(linker,"/entry:WinEntry")
    #pragma comment(linker,"/subsystem:console")
    #pragma comment(linker,"/align:4096")
    #pragma comment(linker,"/merge:.text=.rdata")#include <windows.h>void WinEntry()
    {
    MessageBox(NULL,"","",MB_OK);
    }
      

  2.   

    编译出来才1024字节缺点是不能使用C标准库的函数,如果要使用printf必须这么用#pragma comment(linker,"/entry:WinEntry")
    #pragma comment(linker,"/subsystem:console")
    #pragma comment(linker,"/align:4096")
    #pragma comment(linker,"/merge:.text=.rdata")#include <windows.h>_CRTIMP int (__cdecl *printf)(const char *, ...); 
    void WinEntry()
    {
    HMODULE hMsvcrt=LoadLibrary("msvcrt.dll");
    printf=(void *)GetProcAddress(hMsvcrt,"printf");
    printf("test");
    }
      

  3.   

    呵呵,我这有一个.exe文件只有180byte.
      

  4.   

    debug版的都比较大,如果是release的就很小了
      

  5.   

    有一种工具可以压缩EXE文件,压缩了还可以运行的
    可以搜一搜
      

  6.   

    上面当没讲过
    偶还未看到这句"ASPACK可以生成更小的EXE"