当前位置:  开发笔记 > 编程语言 > 正文

VisualStudio*.obj文件大小(513Mb objs和534Mb lib)

如何解决《VisualStudio*.obj文件大小(513Mbobjs和534Mblib)》经验,为你挑选了1个好方法。

我是C++开发人员并使用Visual Studio 2008.如何减少*.obj文件大小?我已经读过为什么我的visual studio .obj文件与输出.exe文件相比大小很大?但没有找到答案.

当我将项目构建到静态库时,所有*.obj文件的总大小为513Mb,结果lib为534Mb.每个obj文件是1-13Mb.调试exe文件是11Mb.链接时代码生成(/ Gm)已关闭.

提前致谢.



1> CB Bailey..:

由于大量重复的代码和符号放在多个目标文件中,因此目标文件往往会变大.通常,这是由内联函数和实例化模板代码的副本引起的.

由此产生的可执行文件比所有目标文件的总和小得多,因为可以丢弃重复的弱符号和未引用的符号.

就个人而言,我不担心对象文件的大小,但如果你想减少它,那么最小化内联函数的使用,并考虑将模板代码保存在与其他代码不同的文件中,并使用显式实例化只在一个生成所需的实例化地点.

假设您在头文件中有这个.

template< class T >
inline void F( T* t )
{
    // ... some code
}

如果对少数几种类型使用F,则每个翻译单元都会为其使用的类型生成函数的副本.

如果你只用声明替换它:

template< class T > void F( T* t );

然后,您可以在单独的源文件中生成所需的即时消息:

template< class T > void F( T* t )
{
    // definition
}

template void F< int >( int* );
template void F< char >( char* );
template void F< MyType >( MyType* );

当然,您现在必须手动管理需要模板实例化的类型.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有