如何在C / C ++文件中包含lua字节码字符串?
$ luac -o test -s test.lua
$ cat test
LuaS�
xV(w@@A@$@&�printTestj
现在,如果您可以将此字节字符串插入C / C ++文件,则实际上可以
luaL_loadfile(lua, bytestring.c_str());
,因此无需在运行时加载test.lua
。您甚至不必在运行时解释test.lua
,对吗?
更新:
此问题的前两个注释有助于生成字节串,以便您可以将其包括在C / C ++代码中。 From this answer我有这个主意:
xxd -i test > test.h
它创建了这个:
unsigned char test[] = {
0x1b, 0x4c, 0x75, 0x61, 0x53, 0x00, 0x19, 0x93, 0x0d, 0x0a, 0x1a, 0x0a,
0x04, 0x08, 0x04, 0x08, 0x08, 0x78, 0x56, 0x00, /* ... */, 0x00};
unsigned int test_len = 105;
这太好了,但这对luaL_loadstring来说不是 ,因为
此函数使用lua_load将块加载到以零结尾的字符串s中。
注意:test
中有个零位作为数据。