注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

指南针的天空

你永远也看不到我最寂寞时候的样子,因为只有你不在我身边的时候,我才最寂寞。

 
 
 

日志

 
 

给VC生成的可执行程序减肥记  

2011-11-06 09:26:21|  分类: Visual C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
        最近老着摸的怎么样让VC生成的程序体积小一点,后来再网上找了一下,大体就以下一些做法(手段),一是不要链接一些程序中不使的静态库。VC,默认要链接很多,根据自己程序的需要来配吧。二就是尽量使用动态链接,就是要用的时候再来链接他。三是设置编译选项。

下面的例子是比较常用的,也是我试验后真正有用的,就把他记下来,以备查阅。

1、选择编译方式为Release(菜单"组件"-"移除工程配置"里设置).

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

3、"project"-"settings"-"C/C++"-"Code Generation"中选择Run-Time Library的版本。选择动态库版本体积会大大减小。
动态链接库版本:
/MD Multithreaded DLL 使用导入库MSVCRT.LIB
/MDd Debug Multithreaded DLL 使用导入库MSVCRTD.LIB

静态库版本:
/ML Single-Threaded 使用静态库LIBC.LIB
/MLd Debug Single-Threaded 使用静态库LIBCD.LIB
/MT Multithreaded 使用静态库LIBCMT.LIB
/MTd Debug Multithreaded 使用静态库LIBCMTD.LIB

4、在Project->Settings的Link属性页里,在Project Options下面的编辑框里加上一句:
/ALIGN:4096

这样做之后指定了程序不是驱动程序,生成程序体积将再次减小。

5、设置自定义入口点:#pragma comment( linker, "/entry:\"EntryPoint\"" ) // 设置程序入口点

6、屏蔽控制台应用程序的窗口:
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置连接器选项


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

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

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

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


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

//自定义函数入口 

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

//自定义对齐方式 

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

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

#pragma comment(linker,"/merge:.rdata=.data")

#pragma comment(linker,"/merge:.text=.data")

  评论这张
 
阅读(124)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018