搜索
查看: 641|回复: 0

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

[复制链接]

432

主题

573

帖子

2543

积分

核心成员

Rank: 8Rank: 8

积分
2543
发表于 2014-4-1 15:21:19 | 显示全部楼层 |阅读模式
大家都知道,用VC编译出来的HelloWorld也有几十KB,这样体积非常大,没有win32 汇编这么爽
下面的代码实现win32汇编的效果(体积小)
  1. //////////////////////////////////////////////////////////////////////////

  2. //脱离了VC runtime 不能使用C语言和C++的函数库;

  3. //在Release编译基础上修改;

  4. //缓冲区安全检查改成否 /GS-

  5. //代码生成 运行库 多线程DLL /MD



  6. #include <Windows.h>

  7. #pragma comment(linker,"/ENTRY:wWinMainCRTStartup")        //更改入口点;

  8. #pragma comment(linker, "/nodefaultlib")                        //忽略所有默认库;





  9. //////////////////////////////////////////////////////////////////////////

  10. //用API实现的new和delete;

  11. void *operator new[] (unsigned int size)

  12. {

  13.         return HeapAlloc (GetProcessHeap(),NULL,size);

  14. }

  15. void operator delete[] (void* memblock)

  16. {

  17.         HeapFree (GetProcessHeap(),NULL,memblock);

  18. }



  19. class Fuck

  20. {

  21. public:

  22.         int a;

  23.         int c;

  24.         void abc()

  25.         {

  26.                 MessageBox(NULL,L"成员函数",L"测试",MB_OK);

  27.         }

  28. };





  29. VOID WINAPI wWinMainCRTStartup(VOID)

  30. {

  31.         Fuck * fuck = new Fuck[1];

  32.         fuck->abc();

  33.         delete []fuck;

  34.         MessageBox(NULL,L"正常运行",L"哈哈",MB_OK);

  35. }
复制代码
您可以更新记录, 让好友们知道您在做什么...
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表