1
我想將一個Lua腳本加載到我的C++應用程序中並運行它。 我決定使用LuaJIT來利用它的FFI庫。 但我有這個奇怪的問題,在我的Lua腳本不能看到我在我的C++代碼中定義的函數符號,我得到在運行我的應用程序此錯誤:如何將函數從C++可執行文件暴露給LuaJIT
下面未定義的符號:test_func_a
是我的C++和Lua代碼:
// C++ //
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <lua.hpp>
#ifdef __cplusplus
extern "C" {
#endif
void test_func_a (void) {
printf ("hello\n");
}
#ifdef __cplusplus
}
#endif
int main (int argc, char** argv) {
lua_State *lua = luaL_newstate();
assert (lua);
luaL_openlibs (lua);
const int status = luaL_dostring (lua, lua_script_content);
if (status)
printf ("Couldn't execute LUA code: %s\n", lua_tostring (lua, -1));
lua_close (lua);
return 0;
}
// //的Lua
local ffi = require('ffi');
ffi.cdef[[
void test_func_a (void);
]]
ffi.C.test_func_a()
默認GCC將導出所有的符號,怎麼來luajit沒有看到他們?
你是如何編譯你的C++文件? –