Как я могу загрузить файл.библиотека lua глобально на C без необходимости импортировать ее с помощью : loadfile(«файл.lua»)()?

#c #json #lua #luac

Вопрос:

У меня есть библиотека под названием «json.lua», найденная на этом github : github json.lua

Я импортирую эту библиотеку через основной файл.lua следующим образом:

 local json = loadfile("json.lua")() -- json = library loaded
print("json decoded : "..json.decode("13E 2")) -- will print : json decoded = 1300.0 
 

но я хочу использовать переменную «json» глобально, без необходимости импортировать ее с помощью : loadfile(«json.lua»)()

есть ли способ загрузить строку файла json.lua ИЛИ json.lua непосредственно в виртуальную машину lua глобально, чтобы любой другой файл ( main1.lua, main2.lua, main3.lua, …lua ) я просто набрал » json.ANY_FUNCTION » и пойти работать?

Комментарии:

1. ДА. Но как это сделать, зависит от того, как вы интегрировали интерпретатор lua в свой код c . Мы ничего не можем для вас сделать, не видя этого.

2. Я использовал простейшую форму интеграции, просто импортировав библиотеку lua, инициализировав виртуальную машину с помощью luaL_newstate(), после чего загрузил базовые библиотеки lua и запустил : luaL_dofile

Ответ №1:

Запустите это на C перед загрузкой ваших сценариев:

 luaL_dostring(L,"json = dofile('json.lua')");
 

Комментарии:

1. можете ли вы запустить код внутри «json.lua» вместо загрузки файла «json.lua»?

2. @вальдемарлима, вот что luaL_dostring значит.

3. хорошо, но как бы я сделал код внутри json.lua глобальным?

4. LIKE = luaL_dostring(L, «json = {CODE_INSIDE_JSON. LUA} «); , без необходимости вызывать файл json.lua, но загружая код внутри…

5. @waldemarlima, о, ты хочешь поместить весь сценарий в свою программу на C в виде строки? Если да, то смотрите lua-users.org/wiki/BinToCee