迁移到vs2017后,dll的大小很大

时间:2017-10-05 15:38:48

标签: c++ dll visual-studio-2017

我将一些项目从vs2010移植到vs2017,但我遇到了一个非常奇怪的行为:使用vs2017构建的dll大小远远大于vs2010: 4.636 Kb vs 595 kb(发布版本)!!!!!

我做的是:

  1. 1份对比名为test的2010项目
  2. 2017年开放test.vcxproj 并接受工具集的转换(从vs2010到vs2017)
  3. 构建 发行版中的dll。
  4. 我使用dumpbin来尝试理解某些东西,我发现初始化数据的大小更大(十六进制值):

          422600 size of initialized data   VS2017
           28200 size of initialized data   VS2010
    

    任何想法为什么差异以及如何纠正? TIA

1 个答案:

答案 0 :(得分:0)

我发现了问题:

vs2010 c ++编译器与vs2017有不同的行为,即使使用相同的优化编译器选项,编译器也更喜欢初始化静态数据。

我使用了一个boost :: lockfree类,spsc_queue,你可以在编译时指定无锁队列的最大值(固定大小)。

boost::lockfree::spsc_queue<DBG_Data*, boost::lockfree::capacity<1024*1024> > _ringQueue;

使用相同的编译器选项,vs 2017会产生一个巨大的dll。 将优化选项从/ O2(速度)更改为/ O1(大小)仅适用于包含该行的源,我将dll大小减小到正常值。