добавить файлы Lua в программу C ++ - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть скрипт Lua, который запускается на скомпилированной программе C ++ (tg).Моя программа на C ++ tdbot .Скрипт Lua написан на Lua 5.2.Можно ли как-нибудь добавить свои файлы Lua в эту программу на C ++?

Я хочу реализовать это для защиты моих лицензионных кодов.

1 Ответ

0 голосов
/ 07 февраля 2019

Как насчет использования байт-кода lua?В отличие от встраивания кода lua, это не так тривиально, чтобы быть перепроектированным.Конечно, он не на 100% безопасен, но он намного сложнее, чем текстовый код lua.

Если вы не знакомы с байт-кодом , это своего рода язык ассемблера для виртуальной машины.Концептуально отношение «код С» - «код сборки» похоже на «код lua» - «байт-код lua».

Позвольте мне показать, как это сделать.

Сначала скомпилируйте a.lua файл байт-код lua .

$ luac -o a.luac a.lua

И теперь у вас есть a.luac, то есть байт-код lua.Это двоичный формат.Вы можете использовать luaL_loadfile таким же образом.Он автоматически определяет, является ли это текстовым кодом или байтовым кодом.Например:

#include "lauxlib.h"
#include "lua.h"
#include "lualib.h"

int main() {
  lua_State* L = luaL_newstate();
  luaL_openlibs(L);

  luaL_loadfile(L, "a.luac");
  lua_pcall(L, 0, 0, 0);

  lua_close(L);

  return 0;
}

Если вам действительно нужно встроить этот код в код на C, вы можете рассмотреть luaL_loadbuffer, который загружает код lua / байт-код из памяти, а не из файла.Также необходимо предварительно обработать встраивание байт-кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...