Как использовать LUA_COMPAT_ALL?

Я новичок в Lua и особенно в Luabind. Когда я попытался скомпилировать (с помощью Clang++), мой первый файл с использованием Luabind:

    #define LUA_COMPAT_ALL
    #include <luabind/luabind.hpp>
    #include <luaconf.h>
    #include <iostream>

    int main() {

      lua_State *myLuaState = luaL_newstate();


      luabind::open(myLuaState);


      luaL_dostring(
        myLuaState,
        "function add(first, second)\n"
        "  return first + second\n"
        "end\n"
      );
      std::cout << "Result: "
           << luabind::call_function<int>(myLuaState, "add", 2, 3)
           << std::endl;

      lua_close(myLuaState);
    }

Я получил целую кучу сообщений об ошибках.

Итак, я немного осмотрелся и обнаружил, что это связано с моей версией Lua 5.2 по сравнению с 5.1, и обнаружил, что решение было LUA_COMPAT_ALL (о чем я узнал на Проект Lua компилируется с ошибками (luabind)).

К сожалению, я немного скряга, когда дело доходит до Lua; так что я не знаю, куда я это положил.

Надеюсь, мой вопрос не был слишком глупым :)


person Ace shinigami    schedule 11.02.2016    source источник
comment
Lua 5.1 и 5.2 имеют некоторые существенные отличия. Если вы привержены Lua 5.2, похоже, что некоторые люди взяли luabind и сделали новую версию, более совместимую с 5.2. github.com/rpavlik/luabind Может, попробовать?   -  person Adam B    schedule 11.02.2016
comment
@AdamB Я установил boost (через brew) в соответствии с предложенными инструкциями, но когда я bjam install, он возвращает ошибки   -  person Ace shinigami    schedule 11.02.2016


Ответы (1)


Простое определение его в вашем коде должно работать, как сказано в исходном коде Lua (CTRL+F для "LUA_COMPAT_ALL"): http://www.lua.org/source/5.2/luaconf.h.html

(Возможно, это было в руководстве, но позже было удалено из него)

person EinsteinK    schedule 11.02.2016
comment
@EinstienK Я добавил #include <luaconf.h> #define LUA_COMPAT_AL, но все равно получаю ошибки pastebin.com/bx8vxiUW - person Ace shinigami; 11.02.2016
comment
@Julian Во-первых, он называется LUA_COMPAT_ALL, а во-вторых, вы должны определить его до включения luaconf.h. EinsteinK прав до сих пор, но не учитывает ваш большой недостаток опыта C. - person Youka; 12.02.2016
comment
Я исправил это, но, к сожалению, он возвращает ту же ошибку. - person Ace shinigami; 12.02.2016