[英]How to expose a function from C executable to LuaJIT ffi
我正在嘗試從同一個可執行文件中調用 luajit ffi 中的 C 函數,但出現未定義符號錯誤。 為什么?
main.c
#include <luajit-2.0/gcclauxlib.h>
#include <luajit-2.0/lua.h>
#include <luajit-2.0/lualib.h>
extern void my_func(void)
{
printf("f\n");
}
const char *lua = "local ffi = require(\"ffi\")\n"
"ffi.cdef[[\n"
"void my_func(void);\n"
"]]\n"
"ffi.C.my_func()\n";
int main(int argc, char **argv)
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
if (luaL_dostring(L, lua)) {
printf("err: %s\n", lua_tostring(L, -1));
}
lua_close(L);
return 0;
}
跑了:
$ gcc main.c -lluajit-5.1
$ ./a.out
輸出:
err: [string "local ffi = require("ffi")..."]:5: /usr/lib/libluajit-5.1.so.2: undefined symbol: my_func
找到了。 只需要編譯 -Wl,-E
$ gcc main.c -Wl,-E -lluajit-5.1
$ ./out
f
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.