小编Jon*_*ope的帖子

从Rust函数返回一个字符串,用FFI调用

我想让一个解释语言(特别是LuaJIT)调用一个返回字符串的Rust函数.

在我甚至取消引用指针之前我崩溃了什么.

我读到Rust字符串不是以null结尾的,所以我使用该to_c_str()函数来创建一个字符串,但是我认为生命周期在某种程度上会在整个事情中抛出一个扳手,因为我对它们仍然有些模糊.

Rust代码:

#![crate_type = "dylib"]

extern crate libc;

#[no_mangle]
pub extern "C" fn hello_world() -> std::c_str::CString {
    "Hello World".to_c_str()
}
Run Code Online (Sandbox Code Playgroud)

Lua代码:

local ffi = require("ffi")
ffi.cdef[[
char *hello_world();
]]

local hello_world = ffi.load("hello_world")
local hw = hello_world.hello_world()
Run Code Online (Sandbox Code Playgroud)

lua ffi luajit rust

3
推荐指数
1
解决办法
1008
查看次数

标签 统计

ffi ×1

lua ×1

luajit ×1

rust ×1