步骤


  • 下载https://github.com/luabind/luabind/tree/0.9。 其最后一次commit为

Revision: 8c66030818f0eacbb7356c16776539b55d8c5319
Author: Peter Colberg <peter.colberg@utoronto.ca>
Date: 12/24/2011 1:53:29 AM
Message:
Lua 5.2: use new macro lua_pushglobaltable

This macro is not mentioned in the Lua 5.2 manual.
----
Modified: luabind/object.hpp
Modified: src/scope.cpp



添加#include "luabind_compatibility.hpp",内容为


/*
@Author Sygn (https://github.com/sygn-jp)

This file is from https://github.com/sygh-JP/CompactLua . Detailed descriptions could be found
at the author's blog: http://sygh.hatenadiary.jp/entry/2014/06/22/000456 (Japanese only).
*/

#pragma once

#include <lua.hpp>
#include <boost/version.hpp>


// Luabind 0.9.1 uses "boost::operator" but it has been moved to "boost::iterators::operator" in Boost 1.57.0 or later.
// As a result, many compilation errors will occur at the macro "LUABIND_OPERATOR_ADL_WKND" in "luabind/object.hpp".
// One of the best and wisest solutions is to modify the source code of Luabind directly.
// As an alternative way, the following workaround can avoid modifying it but is unbeautiful and pollutes the namespace "boost".

#if (BOOST_VERSION >= 105700)
#include <boost/operators.hpp>
namespace luabind
{
namespace detail
{
// Forward declaration
template<typename T> class basic_iterator;
}
}
namespace boost
{
template<typename T> bool operator ==(
const luabind::detail::basic_iterator<T>& x,
const luabind::detail::basic_iterator<T>& y)
{
return boost::iterators::operator ==(x, y);
}

template<typename T> bool operator !=(
const luabind::detail::basic_iterator<T>& x,
const luabind::detail::basic_iterator<T>& y)
{
return boost::iterators::operator !=(x, y);
}
}
#endif




为config。h,和lua_include.hpp 添加#include "luabind_compatibility.hpp"在policy。hpp添加


LUABIND_NUMBER_CONVERTER(long double, number)
LUABIND_NUMBER_CONVERTER(__int64, number)
LUABIND_NUMBER_CONVERTER(unsigned __int64, number)