项目结构如下。 (Visual Studio 2015社区)
一个静态库项目 一个控制台应用程序项目
使用默认设置创建静态库并链接到控制台应用程序项目。程序运行正常。但是在与静态库链接的控制台应用程序的发布版本中显示以下信息。
编译了所有205个函数,因为找不到以前编译的可用IPDB / IOBJ。
完成生成代码
==========重建全部:1成功,0失败,0跳过==========
使用默认选项生成发布静态库时是否有任何问题。
无法理解为什么静态库构建目录中没有ipdb / iobj文件。而控制台应用程序构建目录中有ipdb / iobj文件。
每个项目(静态/控制台应用程序)都使用默认设置构建。
静态库位于 C ,控制台应用程序位于 C ++
在调试版本中,没有显示此类信息。
答案 0 :(得分:4)
它与静态库构建无关。只有可执行版本具有LTCG:增量选项。构建控制台/ Windows应用程序时,没有ipdb / iobj文件,因此显示信息。首次构建ipdb / iobj文件后创建。所以在此之后再没有信息,直到调用重建。只有具有增量选项的LTCG才能启用。
答案 1 :(得分:1)
与上述相同的问题 项目结构如下。 (Visual Studio 2017 v15.6.6社区)
一个图书馆项目一个Windows应用程序项目
使用默认设置创建库并链接到Windows应用程序项目。程序运行正常。但是在发布版本中,库会产生与上面相同的错误。
上面的第一个答案是正确的。解决这个问题的方法是Visual Studio将查看库构建选项并更改链接器选项。
链接器 - >优化 - > 使用快速链接时间码生成(/ LTCG:增量)
删除链接器选项中的增量
链接器 - >优化 - > 使用快速链路时间码生成(/ LTCG)