在构建 luabind 时遇到错误 C2665。

我正在使用 Lua 5.1Boost1.58.0 尝试构建 _luabind-0.7.1-rc1_。环境变量都已正确设置。我已经搜索了一个星期,但仍无法找到答案。

每次尝试构建 luabind 时,都会出现20个相同的错误:

error C2665: 'boost::operator ==' : none of the 4 overloads could convert all the argument types
s:\luabind-0.7.1-rc1\luabind\object.hpp 542 1

所有错误似乎都来自 #undef 前的最后两行:

// Needed because of some strange ADL issues.

#define LUABIND_OPERATOR_ADL_WKND(op) \
  inline bool operator op( \
      basic_iterator<basic_access> const& x \
    , basic_iterator<basic_access> const& y) \
  { \
      return boost::operator op(x, y); \
  } \
 \
  inline bool operator op( \
      basic_iterator<raw_access> const& x \
    , basic_iterator<raw_access> const& y) \
  { \
      return boost::operator op(x, y); \
  }

  LUABIND_OPERATOR_ADL_WKND(==)
  LUABIND_OPERATOR_ADL_WKND(!=)

#undef LUABIND_OPERATOR_ADL_WKND

以下是一些输出内容(它像这样重复):

s:\luabind-0.7.1-rc1\luabind\object.hpp(542): error C2665: 'boost::operator ==' : none of the 4 overloads could convert all the argument types
          s:\boost_1_58_0\boost\function\function_base.hpp(750): could be 'bool boost::operator ==(boost::detail::function::useless_clear_type *,const boost::function_base &)'
          s:\boost_1_58_0\boost\function\function_base.hpp(738): or       'bool boost::operator ==(const boost::function_base &,boost::detail::function::useless_clear_type *)'
          s:\boost_1_58_0\boost\function\function_base.hpp(809): or       'bool boost::operator ==<luabind::detail::basic_iterator<luabind::detail::basic_access>>(Functor,const boost::function_base &)'
          with
          [
              Functor=luabind::detail::basic_iterator<luabind::detail::basic_access>
          ]
          s:\boost_1_58_0\boost\function\function_base.hpp(800): or       'bool boost::operator ==<luabind::detail::basic_iterator<luabind::detail::basic_access>>(const boost::function_base &,Functor)'
          with
          [
              Functor=luabind::detail::basic_iterator<luabind::detail::basic_access>
          ]
          while trying to match the argument list '(const luabind::detail::basic_iterator<luabind::detail::basic_access>, const luabind::detail::basic_iterator<luabind::detail::basic_access>)'

有人可以解释或解决这个问题吗? 这个错误是什么原因造成的,我该如何修复它,以及如何在将来避免它?

点赞
用户5113346
用户5113346

你需要使用一个较旧的 boost 库。luabind 0.7.1 是从 2008 年发布的。尝试使用差不多同一年的 Boost 版本。我曾经用 luabind 0.8.1 和 Boost 1.58.0 遇到过完全相同的问题。

在我的情况下,1.55.0 版本非常好用,而且它可以在 vs2013 上工作。显然,较旧版本的 Boost 需要为 vs2013 打补丁。

2015-07-14 02:25:17
用户329564
用户329564

你现在可以(2015年9月)转向使用luabind 0.9版本,而不是使用0.7版本。

2015-09-23 14:59:21