lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Hi, I want to call a C function from within the same executable as my
lua VM through FFI but I get undefined symbol error. Why?

file: my_func.lua
local ffi = require("ffi")
ffi.cdef[[
void my_func(void);
]]
ffi.C.my_func()

file: main.c
#include <luajit-2.0/lauxlib.h>
#include <luajit-2.0/lua.h>
#include <luajit-2.0/lualib.h>

extern void my_func(void)
{
        printf("hello\n");
}

int main(int argc, char **argv)
{
        lua_State *L = luaL_newstate();

        luaL_openlibs(L);

        if (luaL_dofile(L, "my_func.lua")) {
                printf("err: %s\n", lua_tostring(L, -1));
        }
        lua_close(L);

        return 0;
}

ran with:
$ gcc main.c -lluajit-5.1
$ ./a.out

output:
$ err: my_func.lua:6: /usr/lib/libluajit-5.1.so.2: undefined symbol: my_func

Attachment: my_func.zip
Description: Zip compressed data