Boost 从 1.42 升级到 1.61

Boost upgrade from 1.42 to 1.61

我们在项目中使用的是 boost 1.42,由于公司政策,我们必须迁移到使用 boost 1.61。我在我们的 make 文件中将 boost 1.42 的引用替换为 boost 1.61,并进行了编译。我遇到了许多与 boost 相关的错误,因为从 boost 1.42 到 boost 1.61,许多 boost 方法名称已被弃用,我修复了这些编译错误。但是,在修复这些问题之后,现在正在使用 boost 1.61 进行编译,但我遇到了以下 linking 错误 -- LINK:致命错误 LNK1104:无法打开文件 'libboost_signals-vc140-mt-gd-1_61.lib'

在比较 boost(1.42 和 1.61)的 lib 文件时,我发现 libboost_signals-vcxx-zzzz.lib 仅存在于 boost 版本 1.42 而不是 boost 1.61。那么,为什么 linker 试图 link 到 libboost_signals-vcxx-zzz.lib。有什么方法可以调试它以了解哪段代码导致了这个 linking 错误?

您正在使用的某些增强库依赖于信号或仍在某些生成文件中。它在您的 1.1 目录中丢失并且需要存在。它在这个包中:

https://sourceforge.net/projects/boost/files/boost-binaries/1.61.0/boost_1_61_0-msvc-14.0-64.exe/download

.lib 文件不随 Boost 提供;你自己建造它们。几年前你可能也为 1.42 做过这个,但你现在需要为 1.61 做。

Build instructions for Boost 1.61 on Windows