Я использую Luajit 2.0.4 на Ubuntu 16.04.
У меня есть простая библиотека C.
int five() {
return 5;
}
Я компилирую так
gcc -o five.so -shared -fPIC -Wall -Werror five.c
В том же каталоге у меня есть lua-скрипт
local ffi = require("ffi")
ffi.load("./five.so")
ffi.cdef([[
int five();
]])
print(ffi.C.five())
Я также пробовал это с абсолютным путем.
local ffi = require("ffi")
local fh = assert(io.popen("pwd", "r"))
local cwd = assert(fh:read())
print(cwd)
ffi.load(cwd .. "/five.so")
ffi.cdef([[
int five();
]])
print(ffi.C.five())
Когда я бегу
luajit five.lua
я понимаю это
luajit: five.lua:6: luajit: undefined symbol: five
stack traceback:
[C]: in function '__index'
five.lua:6: in main chunk
[C]: at 0x004044a0
Как загрузить общий объект в текущий рабочий каталог в luajit?
local lib = ffi.load( "./five.os" ); print( lib.five() )
или (в POSIX)ffi.load( "./five.so", true ); print( ffi.C.five() )
. Ознакомьтесь с документацией ffi. - person siffiejoe   schedule 04.06.2016