zoukankan      html  css  js  c++  java
  • 如何编译luabind支持vs2010之后所有版本

    步骤

    • 下载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)
  • 相关阅读:
    sql优化-使用exists代替distinct
    count(*),count(1),count(c_bh)效率问题
    nulls last和null first
    连表更新
    postgresql-删除重复数据保留一条
    postgresql批量插入
    pg中join,left join的使用,将条件放到on和where后面的区别问题
    pg关于not in和not exists的使用
    postgresql关于in和exists使用
    postgresql无序uuid性能测试
  • 原文地址:https://www.cnblogs.com/cutepig/p/10493502.html
Copyright © 2011-2022 走看看