Как включить строку lua-bytecode-в файл C / C ++?
$ 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 ++.
Из этого ответа Я получил эту идею:
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
.
есть
нулей .