У меня есть 2 сценария lua. Один требует другого. Так как я могу вызвать его из программы на C?
Например:
main.lua
local foo = require "foo"
function main()
foo.bar()
end
main()
foo.lua
function bar( )
io.write("hello, world!\n")
end
А это моя программа на C:
#include <lauxlib.h>
#include <lua.h>
#include <lualib.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
int status, result;
lua_State *L;
L = luaL_newstate();
luaL_openlibs(L);
status = luaL_loadfile(L, "main.lua");
if (status) {
fprintf(stderr, "Couldn't load file: %s\n", lua_tostring(L, -1));
exit(1);
}
result = lua_pcall(L, 0, LUA_MULTRET, 0);
if (result) {
fprintf(stderr, "Failed to run script: %s\n", lua_tostring(L, -1));
exit(1);
}
lua_close(L);
return 0;
}
Выдает ошибку времени выполнения:
Не удалось запустить скрипт: main.lua: 130: модуль 'foo' не найден: поле отсутствует
package.preload ['foo'] нет файла '/usr/local/share/lua/5.3/foo.lua' нет
файл '/usr/local/share/lua/5.3/foo/init.lua' нет файла
'/usr/local/lib/lua/5.3/foo.lua' нет файла
'/usr/local/lib/lua/5.3/foo/init.lua' нет файла './foo.lua' нет файла
'./foo/init.lua' нет файла '/usr/local/lib/lua/5.3/foo.so' нет файла
'/usr/local/lib/lua/5.3/loadall.so' no file './foo.so'
Я думаю, это потому, что foo.lua не загружается в виртуальную машину lua, но я не могу найти API, например, загрузить файлы или сделать файлы. Так что мне делать?