【问题标题】:vc++ vs2013 code with boost powered by nuget does not build由 nuget 提供支持的 vc++ vs2013 代码无法构建
【发布时间】:2014-12-18 09:10:30
【问题描述】:

我对 VC++ 和 Boost 很陌生。 我的问题是我想在我的 VC++ Visual Studio 2013 项目中使用 Boost 1.56.0(所以我使用 vc120)。

我已经通过 NuGet (https://www.nuget.org/packages/boost/) 安装了 Boost。一切似乎都很好,但是当我尝试构建我的项目时,它说:

致命错误 LNK1104:无法打开文件“libboost_thread-vc120-mt-gd-1_56.lib”。

您知道问题出在哪里以及如何解决吗?

我认为使用 NuGet 安装包将完成整个工作,让事情自行运行。 我知道链接器找不到 lib 文件(实际上根本没有构建过程)。但我不知道如何解决这个问题。

我认为使用VC120手动编译Boost并将lib文件夹添加到链接器的附加路径中并不是一个好主意。那我为什么要使用 NuGet?

欢迎任何帮助 - 我正在尝试和搜索互联网这么多小时,但我无法解决问题。

谢谢你, 斯蒂芬

【问题讨论】:

  • 您是否尝试将目录添加到您的Project Properties 中的.lib 文件中?
  • 感谢您的评论。好吧,实际上没有 .lib 文件。我想当我用 NuGet 安装 Boost 时,整个构建过程将是自动化的。 Boost 源文件位于文件夹 packages\boost.1.56.0.0\lib\native\include\boost 中。我已将所有内容上传到GitHub。还有另一个文件夹 packages\boost.1.56.0.0\build\native 包含 boost.targets,其中 native\include 文件夹(上面提到的)被标记为 ClCompile 的 AdditionalIncludeDirectories。

标签: c++ visual-c++ boost visual-studio-2013 nuget


【解决方案1】:

如前所述,Boost Nuget 不能包含所有可能的配置和编译器版本的所有可能的编译库。但是,有单独的预编译 Nuget 包和源包。这是所有 1.56.0 Boost Nuget 包的列表https://getboost.codeplex.com/releases/view/126256

在你的情况下,我建议使用预编译的boost_thread-vc120.1.56.0。还没有1.57!

如果你很懒,你也可以使用boost-vc120.1.56.0,它依赖于 Visual Studio 2013 的所有预编译 Boost 库。

【讨论】:

  • 但是 ASIO 不是这个包的一部分,还是我忽略了它?
  • 不是 Boost.ASIO 头文件库吗?如果是,那么您可以使用 Boost nupkg,并且可以使用一些额外的预编译包,例如 boost_system-vc120 和 boost_regex-vc120。见stackoverflow.com/questions/5089245/boost-asio-as-header-only据我了解,没有boost asio lib文件。
  • 我不知道 - 抱歉。你是绝对正确的。我查看了我的 Boost lib 文件夹。实际上没有 ASIO lib 文件。
【解决方案2】:

似乎最新版本的 NuGet for boost 并不包含所有 lib 和 dll 文件包 (source)。

您应该完全安装boost_thread

【讨论】:

  • 谢谢 - 但由于缺少 ASIO 库,我遇到了另一个问题。这就是我使用上面提到的 NuGet 的 Boost 数据包的原因。 ://
  • 这是另一个问题。无论如何,您应该自己使用 google 找到缺少的依赖项。
【解决方案3】:

BlueGo 是一个使用 Visual Studio 2010/12/13 构建 Boost 的工具。您只需要启动应用程序,选择您的配置并点击构建按钮 - 其他一切都会自动运行。

可以在这里下载:https://bitbucket.org/Vertexwahn/bluego

【讨论】:

【解决方案4】:

由于Boost的NuGet包不再包含lib文件,因为包越来越大,我决定自己构建Boost。

我按照以下说明操作:Build Boost for Visual Studio - 另请阅读第二篇文章!

我看到它为时已晚,但也许它对其他人有帮助: There are pre-build Boost installer! 在这里您可以下载安装程序,它将安装 32/64 位的 Boost(特定版本)(取决于您选择的文件)。也已经有不同的版本(vc100、vc110、vc120)可用。

使用 NuGet 时的问题是,你有

  1. 安装 Boost 包(获取源文件)
  2. 安装 lib 文件(请参阅link Marco A. 提供)

这可能非常麻烦,因为并非所有 Boost 库都可用。例如。 ASIO 的 lib 文件丢失。因此,如果您需要它们,则必须自己重新编译。所以你用 NuGet 包和自编译的 boost 库搞砸了你的项目。如果 NuGet 提供您需要的一切,我会使用 NuGet 方式。

最后,正如我所说,我需要 ASIO 库,因此我终于自己编译了 Boost。使用 NuGet 包似乎很容易。

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多