Существует разница между простым выполнением сценария Lua и загрузкой модуля Lua.Если вы хотите загрузить модуль Lua, то вы должны фактически загрузить модуль Lua точно так же, как это сделал бы скрипт: вызвав require
.
Поскольку вы, похоже, не знакомы с Lua, я, вероятно, должен объяснить это.Вы, вероятно, видели такой код в скриптах Lua:
require 'mycalculator'
Это не какое-то специальное утверждение для Lua.Это вызов функции .Это просто синтаксический сахар для:
require('mycalculator')
Функции в Lua можно вызывать с синтаксисом NAME VALUE
вместо синтаксиса NAME(...)
, но он позволяет отправлять только один параметр.И параметр должен быть литералом (или конструктором таблицы).
Чтобы вызвать функцию Lua require
из C, вы должны использовать стек Lua.Вы должны извлечь функцию из глобальной таблицы, используя lua_getfield(L, LUA_GLOBALSINDEX, "require");
Затем вы помещаете в стек строку, содержащую имя загружаемого модуля.Затем вы используете lua_pcall
или любую функцию вызова функции Lua для ее вызова.