Насколько сложным является FFI LuaJIT?

Недавно я посмотрел на Lua, и это кажется очень приятным. Единственная неприятная вещь - отсутствие (стандартных) библиотек. Но с JIT-компилятором идет хороший интерфейс FFI C.

Исходя из java-фона, я старался избегать C как можно больше, поэтому мой вопрос: есть ли у кого-то некоторый опыт работы с LuaJIT, особенно с его интерфейсом FFI, и насколько сложно создать библиотеку для кого-то, у кого мало нет знаний в C?

Ответ 1

Казалось, что для меня очень просто, и у Майка Палла есть несколько хороших учебников по нему здесь, список рассылки lua также содержит несколько хороших примеров, поэтому ознакомьтесь с архивами как а

Ответ 2

насколько сложно создать библиотеку для кого-то, у кого мало что знания в C?

Действительно легко. Во-первых, вам нужно объявить функции, которые вы хотите использовать. Затем загрузите целевую библиотеку и назначьте ее переменной Lua. Используйте эту переменную для вызова внешних функций.

Вот пример использования функции powf из C-математической библиотеки.

local ffi = require("ffi")

-- Whatever you need to use, have to be declared first
ffi.cdef([[
   double powf(double x, double y); 
]])

-- Name of library to load, i.e: -lm (math)
local math = ffi.load("m")

-- Call powf
local n, m = 2.5, 3.5
print(math.powf(n, m))