【问题标题】:Why boost library with wrong toolset is searched while linking?为什么在链接时搜索带有错误工具集的 boost 库?
【发布时间】:2019-07-25 12:13:22
【问题描述】:

我正在构建一个项目,该项目需要提升库。我在VS2017中编译了boost库1_70并生成了库文件。我正在使用 VS2017 构建我的项目,所以我的工具集是 V141。但是,虽然链接编译器需要 V140。

LINK:致命错误 LNK1104:无法打开文件 'libboost_date_time-vc140-mt-gd-1_58.lib'

我尝试了以下方法,

  1. 头文件中的包含路径正确。为了确认这一点,我只是在其中一个 cpp 文件中输入了 BOOST_LIB_VERSION 并在按下 F2 的同时,将我带到了 boost 的 version.hpp 文件。

#define BOOST_LIB_VERSION "1_70"

  1. 我刚刚打开了 boost 的 auto_link.hpp 文件,我可以看到 v141 工具集已启用。

定义 BOOST_LIB_TOOLSET "vc141"

  1. 在附加的库目录中,我可以看到提供了 boost 路径。我也通过怀疑宏给出了绝对路径。 $(THIRDPARTY_DIR)\boost\include

我希望在链接时搜索 V141 和正确的 boost 库。

【问题讨论】:

  • 您是否出于某种原因有多个用于AdditionalIncludeDirectories 和/或AdditionalLibraryDirectories 的提升目录?您是否还尝试关闭所有 VisualStudio 实例并再次重新启动它(有时传递给 MSBuild 的缓存未更新)?还要检查Inherited values 中的这些变量(在导致此类行为的不同引用属性表中有两个版本的 boost)。
  • 在 include 目录中正好指向了两个版本的 boost。谢谢。
  • @Zaiborg 将其作为答案发布。

标签: c++ boost


【解决方案1】:

您可能在编译器输入中添加了多个 boost 包含目录。检查 Visual Studio 的 AdditionalIncludeDirectories 变量(包括其继承值)以确保仅包含所需的版本。

我没有复制粘贴评论,因为它主要是问题。这里是您反馈的“答案”:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多