23

在尝试为Visual Studio 2013 Preview (MSVC12)构建Boost 1.54时,它会发出警告:

未知的编译器版本 - 请运行配置测试并报告结果

然后失败并出现错误:

boost_1_54_0\boost/iterator/detail/facade_iterator_category.hpp(166):错误 C2039:“assert_not_arg”:不是“boost::mpl”的成员

看起来 MSVC11 的旧库不兼容。

我真的真的很想测试新的 IDE/编译器版本并且需要提升。那么,是否可以在新的 Visual Studio 2013 Preview 中使用 boost?

4

4 回答 4

24

是的。有可能的。

可能的解决方案是:

  1. 尝试构建Boost 1.53:不是太新鲜,但出于某种奇怪的原因,它构建得很好。
  2. 如果您真的需要 Boost 1.54(新的 Log 库看起来不错 :)),请尝试将此diff-patch 应用到您的 Boost 1.54 发行版。它最适合版本 84920,但您也可以尝试任何其他版本。请注意,我不是此补丁的作者。
  3. 尝试使用Subversion获取最新版本: svn co http://svn.boost.org/svn/boost/trunk boost-trunk。在您阅读本文时,贡献者已经修复了问题。

编辑:2013 年 8 月 26 日

看起来boost的人解决了这些问题。最新的 SVN 版本svn co http://svn.boost.org/svn/boost/trunk boost-trunk构建良好。感谢他们!

编辑:2013 年 12 月 4 日

引用 TheArtTrooper 评论:

使用 Visual Studio 2013 RTM 提升 1.55.0 版本,无需任何额外补丁

快乐提升!

于 2013-07-03T06:06:21.380 回答
11

如果您使用自动链接增强功能,您还需要修补 boost/config/auto_link.hpp。我将文件更改为:

    // vc10:
#    define BOOST_LIB_TOOLSET "vc100"

#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)

     // vc11:
#    define BOOST_LIB_TOOLSET "vc110"

#  elif defined(BOOST_MSVC)

     // vc12:
#    define BOOST_LIB_TOOLSET "vc120"

#  elif defined(__BORLANDC__)
于 2013-07-04T10:26:43.497 回答
4

感谢Lars Viklund 提供的几个补丁,我能够构建 Boost 1.54(以及依赖它的项目)。在撰写本文时,前两个补丁已提交给 SVN - 修订版 85177。

于 2013-07-31T21:47:39.830 回答
0

我在 Visual Studio 2013 Update 4 和 Boost 1.54 中遇到了这个问题,更新到 Boost 1.57 修复了它。

于 2015-02-17T06:44:29.453 回答