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