gpt4 book ai didi

c - 嵌入时如何使用LuaJIT的ffi模块?

转载 作者:太空狗 更新时间:2023-10-29 16:44:12 28 4
gpt4 key购买 nike

我正在尝试将 LuaJIT 嵌入到 C 应用程序中。代码是这样的:

#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <stdlib.h>
#include <stdio.h>

int barfunc(int foo)
{
/* a dummy function to test with FFI */
return foo + 1;
}

int
main(void)
{
int status, result;
lua_State *L;
L = luaL_newstate();

luaL_openlibs(L);

/* Load the file containing the script we are going to run */
status = luaL_loadfile(L, "hello.lua");
if (status) {
fprintf(stderr, "Couldn't load file: %s\n", lua_tostring(L, -1));
exit(1);
}

/* Ask Lua to run our little script */
result = lua_pcall(L, 0, LUA_MULTRET, 0);
if (result) {
fprintf(stderr, "Failed to run script: %s\n", lua_tostring(L, -1));
exit(1);
}

lua_close(L); /* Cya, Lua */

return 0;
}

Lua代码是这样的:

-- Test FFI
local ffi = require("ffi")
ffi.cdef[[
int barfunc(int foo);
]]
local barreturn = ffi.C.barfunc(253)
io.write(barreturn)
io.write('\n')

报错如下:

Failed to run script: hello.lua:6: cannot resolve symbol 'barfunc'.

我搜索了一下,发现关于 ffi 模块的文档真的很少。非常感谢。

最佳答案

ffi 库需要 luajit,所以你必须用 luajit 运行 lua 代码。从文档:“FFI 库紧密集成到 LuaJIT 中(它不能作为单独的模块使用)”。

如何嵌入luajit?看这里http://luajit.org/install.html在“嵌入 LuaJIT”下

在 mingw 下你的例子运行如果我添加

__declspec(dllexport) int barfunc(int foo)

在 barfunc 函数处。

在 Windows 下,luajit 被链接为一个 dll。

关于c - 嵌入时如何使用LuaJIT的ffi模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com