从 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


更新于: 19-Jul-2021

503 次浏览

开启你的事业

在完成课程后获得认证

开始
广告