设为首页 加入收藏

TOP

减小VC编译文件体积
2014-11-19 16:54:18 】 浏览:8783
Tags:减小 编译 文件 体积

  通常vc++编译出来的程序体积很大,debug模式的程序的最小体积一般都在100KB以上。这使不少人对VC++有了不好的印象,以为VC++是制造麻烦的工具。其实情况并不是这样,我们可以通过一些办法有效的减少执行程序的体积。


  下面通过一个具体的范例给你讲述:


  1,首先我们打开vc++建立一个Win32 Application,工程名随便,接下来选择“a Typical "hello World" application”(因为是范例,所以以hello world为标准)


  2,选择编译方式为Win32 - Release. 这时候你编译程序,生成的执行程序是28kb(如果你的机器感染了病毒,体积可能会大一些,如果我的机器感染了病毒,而你的机器正常,你的执行程序可能会小一些...这些全都是废话)


  3,选择菜单:Project->Settings(或者按Alt+F7),打开Link属性页。将Object/library modules:下面编辑框中的各种lib全部删除,然后打上MSVCRT.LIB kernel32.lib user32.lib


  此后编译程序,生成的执行程序为20kb(此时编译程序会出现警告:LINK : warning LNK4098: default lib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library不必理会,如果你想去掉警告,就在Ignore all default libraries前打勾)


  4,接着上面,在Project->Settings的Link属性页里,在Project Options下面的编辑框里加上一句:/ALIGN:4096 这样做之后指定了程序不是驱动程序


  此后编译程序,生成的执行程序为7KB


  至此给Win32 Application减肥告一段落,7KB的程序另我满意了,如果你觉得还能减,不妨再做一些别的尝试,等你的好消息:)


  减肥总结:选择恰当的编译模式,去掉不必要的库。


  二


  今天突然想到见过别人用vc写的木马 下载者之类大小都只有 几K (没用过pe压缩程序)


  我写个hello world用 release + minimize size 编译都有30++k


  于是google寻求解答 搜索了一些相关信息 有效的做个总结如下


  #include


  //自定义加载的库


  #pragma comment(lib,"kernel32.lib")


  #pragma comment(lib,"shell32.lib")


  #pragma comment(lib,"msvcrt.lib")


  //自定义函数入口


  #pragma comment(linker, "/ENTRY:EntryPoint")


  //自定义对齐方式


  #pragma comment (linker, "/ALIGN:512")


  #pragma comment(linker, "/FILEALIGN:512")


  // 优化选项


  #pragma comment(linker, "/opt:nowin98")


  #pragma comment(linker, "/opt:ref")


  #pragma comment (linker, "/OPT:ICF")


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC隐藏文件和判断文件是否存在 下一篇钩子技术、HOOK技术在VC编程中的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目