龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

减小Exe, DLL 的大小问题 - VC(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
连接设置: #ifndef _DEBUG // default lib setting. #pragma comment(linker, "/defaultlib:kernel32.lib") #pragma comment(linker, "/defaultlib:LIBCTINY.LIB") #pragma comment(linker, "/nodefaultlib:libc

连接设置:

#ifndef _DEBUG

 // default lib setting.
 #pragma comment(linker, "/defaultlib:kernel32.lib")
 #pragma comment(linker, "/defaultlib:LIBCTINY.LIB")
 #pragma comment(linker, "/nodefaultlib:libc.lib")
 #pragma comment(linker, "/nodefaultlib:libcmt.lib")

 // section size
 #pragma comment(linker, "/FILEALIGN:16")
 #pragma comment(linker, "/ALIGN:16")
 #pragma comment(linker, "/OPT:NOWIN98")

 // 合并段
 #pragma comment(linker, "/MERGE:.rdata=.data")
 #pragma comment(linker, "/MERGE:.text=.data")
 #pragma comment(linker, "/MERGE:.reloc=.data")

#endif

另外我的测试程序中导出了一个接口
BOOL _stdcall ExpHook( )
{
 return 0;
}

最终大小为: 992字节.

3. 复杂Dll 和复杂Exe 大小问题

如果你的程序一定要使用MFC, 那怎么编绎至少也有几十KB了.
但你还是可以用相关PE压缩程序压缩一下的. 至少能压缩到50%.

如果是COM, 建议不要使用MFC, 如果使用ATL, 可以使用压缩程序压缩一下, 基本会在20-40K 大小.

复杂类型的Dll, Exe 肯定是要使用运行库的. 像用了ATL就没有办法不用运行库了.
----------------------------------------
感谢大家对此关心, 并有相关研究请指教于我

精彩图集

赞助商链接