脱离VC运行库 编译出极小的程序


大家都知道,用VC编译出来的HelloWorld也有几十KB,这样体积非常大,没有win32 汇编这么爽

下面的代码实现win32汇编的效果(体积小)

//////////////////////////////////////////////////////////////////////////
//脱离了VC runtime 不能使用C语言和C++的函数库;
//在Release编译基础上修改;
//缓冲区安全检查改成否 /GS-
//代码生成 运行库 多线程DLL /MD

#include <Windows.h>
#pragma comment(linker,"/ENTRY:wWinMainCRTStartup")        //更改入口点;
#pragma comment(linker, "/nodefaultlib")                   //忽略所有默认库;


//////////////////////////////////////////////////////////////////////////
//用API实现的new和delete;
void *operator new[] (unsigned int size) 
{ 
        return HeapAlloc (GetProcessHeap(),NULL,size); 
} 
void operator delete[] (void* memblock) 
{ 
        HeapFree (GetProcessHeap(),NULL,memblock); 
}

class Fuck
{
public:
        int a;
        int c;
        void abc()
        {
                MessageBox(NULL,L"成员函数",L"测试",MB_OK);
        }
};


VOID WINAPI wWinMainCRTStartup(VOID)
{
        Fuck * fuck = new Fuck[1];
        fuck->abc();
        delete []fuck;
        MessageBox(NULL,L"正常运行",L"哈哈",MB_OK);
}

工程打包 (VS2013) win32.zip

github

大家可以在一台没有装VC2013运行库的机器上试验

侧栏导航