如何将Lua脚本转换为Lua字节码?

如果我有一个Lua脚本,比如

print'hi'

使用C ++如何获取与之等效的Lua字节码?不过我不确定我是否解释清楚了。感谢您的所有帮助!

点赞
用户107090
用户107090

你需要加载一个脚本然后将其字节码转储。

相关的 C API 函数是 luaL_loadfileluaL_loadstring(它们使用基元 lua_load)用于加载,lua_dump 用于转储。

使用这些辅助函数来完成加载很容易。

由于需要提供一个写入器函数,转储需要进行一些额外的工作。加载后调用 string.dump 或许更容易:

// 加载脚本,将函数放在堆栈上
lua_getglobal(L,"string");
lua_getfield(L,"dump");
lua_pushvalue(L,-3);
lua_call(L,1,1);
// 包含字节码的字符串位于堆栈上
2017-04-12 01:27:10