apt install luajit
dnf install luajit
创建项目 blua 库
blua
cargo new blua --lib
修改项目的文件 Cargo.toml 后追加
Cargo.toml
[lib] name = "double_input" crate-type = ["staticlib", "cdylib"]
src/lib.rs 内容修改为
src/lib.rs
#![crate_type = "dylib"] #[no_mangle] pub extern "C" fn double_input(input: i32) -> i32 { input * 2 }
编译类库
cargo build --release # 查看生成的文件 .so ls target/release/*.so # target/release/libdouble_input.so
创建文件 test.lua,内容为
test.lua
print("Hello World") local ffi = require("ffi") ffi.cdef[[ int32_t double_input(int32_t n); ]] local rust_lib = ffi.load("./target/release/libdouble_input.so") local n = 1234 print(rust_lib.double_input(n))
测试桥接是否成功
luajit test.lua # 打印 Hello World 2468