从 C++ 到 Lua 传递 Lua 脚本
从 C++ 到 Lua 传递 Lua 脚本的想法包括一个事实,即由于 Lua 是 ANSI C,我们需要加载库和头文件,并且如果我们在 C++ 中进行编码,我们需要用 extern "C" 来封装 #includes。
常用且历史较久的方法是加载 Lua 提供的库,然后从 Lua 直接调用 C++ 函数。
要从 C++ 加载脚本到 Lua,我们需要设置并关闭 Lua 解释器,我们可以借助以下代码来完成此操作。
示例
考虑如下所示的代码:
extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" } int main(int argc, char *argv[]){ lua_State* L; initialize Lua interpreter L = luaL_newstate(); load Lua base libraries (print / math / etc) luaL_openlibs(L); //////////////////////////////////////////// We can use Lua here ! ///////////////////////////////////////////// lua_close(L); printf( "Press enter to exit..." ); getchar(); return 0; }
之后,我们只需使用 LuaL_dostring(L, …) 函数,将字符串直接发送到 Lua 解释器中,它将被执行,就好像该字符串在用 dofile 执行的文件中一样。
示例
考虑如下所示的代码:
luaL_dostring(L, "for x = 1, 5 do print(x) end");
输出
1 2 3 4 5
广告