找不到以前编译中的可用IPDB / IOBJ

时间:2016-11-21 12:45:15

标签: c++ c visual-c++

项目结构如下。 (Visual Studio 2015社区)

一个静态库项目 一个控制台应用程序项目

使用默认设置创建静态库并链接到控制台应用程序项目。程序运行正常。但是在与静态库链接的控制台应用程序的发布版本中显示以下信息。

  

编译了所有205个函数,因为找不到以前编译的可用IPDB / IOBJ。

     

完成生成代码

     

==========重建全部:1成功,0失败,0跳过==========

使用默认选项生成发布静态库时是否有任何问题。

无法理解为什么静态库构建目录中没有ipdb / iobj文件。而控制台应用程序构建目录中有ipdb / iobj文件。

每个项目(静态/控制台应用程序)都使用默认设置构建。

静态库位于 C ,控制台应用程序位于 C ++

在调试版本中,没有显示此类信息。

2 个答案:

答案 0 :(得分:4)

它与静态库构建无关。只有可执行版本具有LTCG:增量选项。构建控制台/ Windows应用程序时,没有ipdb / iobj文件,因此显示信息。首次构建ipdb / iobj文件后创建。所以在此之后再没有信息,直到调用重建。只有具有增量选项的LTCG才能启用。

答案 1 :(得分:1)

与上述相同的问题 项目结构如下。 (Visual Studio 2017 v15.6.6社区)

一个图书馆项目一个Windows应用程序项目

使用默认设置创建库并链接到Windows应用程序项目。程序运行正常。但是在发布版本中,库会产生与上面相同的错误。

上面的第一个答案是正确的。解决这个问题的方法是Visual Studio将查看库构建选项并更改链接器选项。

链接器 - >优化 - > 使用快速链接时间码生成(/ LTCG:增量)

删除链接器选项中的增量

链接器 - >优化 - > 使用快速链路时间码生成(/ LTCG)