迁移到VS2017后的DLL尺寸巨大

Huge size of dll after migrating to vs2017

本文关键字:巨大 DLL 后的 VS2017 迁移      更新时间:2023-10-16

我正在移植一些从VS2010到VS2017的项目,但是我经历了一种非常奇怪的行为:使用VS2017构建的DLL的大小远大于VS2010 One:4.636 kb vs 595 kb(发行版)!!!!

我所做的是:

  1. 1副本与名称测试的2010年项目
  2. 开放test.vcxproj与2017年并接受工具集的转换(从VS2010到VS2017)
  3. 建造发行版中的dll。

我使用dumpbin尝试了解某些东西,发现初始数据的大小更大(十六进制值):

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

知道为什么差异以及如何纠正?tia

我发现了问题:

VS2010 C 编译器与VS2017的行为有关编译器如何使用相同的优化编译器选项来初始化静态数据。

我使用boost :: spsc_queue,您可以在编译时指定锁定队列的最大(固定尺寸)。

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

使用相同的编译器选项,vs 2017可产生巨大尺寸的DLL。将优化选项从/o2(speed)更改为/o1(size)仅对于包含该行的源,我将DLL大小降低到正常值。