Используя NLua, как работает ключевое слово require

У меня есть некоторый код Lua, который содержит мою бизнес-логику, которую я хотел бы запустить внутри.NET, используя NLua.

Некоторые из моих файлов lua в настоящее время используют ключевое слово require для ссылки на функции в других файлах. Теперь это работает нормально, если я запускаю код, например, с помощью ZeroBrane Studio. Однако, как только я использую "DoFile" для загрузки кода в NLua, я получаю некоторые ошибки "Module not found".

Мой вопрос я могу использовать концепцию "требуют" при запуске кода внутри NLua? Если нет, то нужно ли мне удалять эти строки перед запуском DoFile для файлов (и, конечно, убедитесь, что файлы запускаются в правильном порядке)?

Обновление: я думаю, что, возможно, мне просто нужно добавить папку с файлами Lua в package.path. Я решил это, сделав DoString("package.path = '<my_path>' .. package.path"); Это "лучшая практика"?

0 ответов

Местоположение корневого каталога, в котором начинается поиск, - это место, где выполняется исполняемый файл, а не место, в котором был запущен файл. DoString на находится.

Вот несколько примеров мест, которые NLua потребует посмотреть, используя heaps.lua в качестве примера файла:

нет файла./heaps.lua
нет файла "./heaps/init.lua"
нет файла./lua/heaps.lua

Пример:

Путь к исполняемому файлу C:\foo\bar.exe

Путь к сценарию C:\baz\qux.lua

qux.lua имеет требование для heapsНлуа будет искать в C:\foo\ для кучи и не буду искать C:\baz\,

Другие вопросы по тегам