DLL файловой системы Lua недействительна

Довольно новичок в среде LUA, так что, надеюсь, я просто упустил что-то очень маленькое. Я пытался скомпилировать LuaFileSystem с помощью LuaRocks и MinGW. После окончательной компиляции я пытаюсь загрузить DLL, используя

require("lfs")

и

local f = assert(package.loadlib("lfs.dll","lfs"))
lfs = f()

И я продолжаю получать эту ошибку

Exception in thread "main" com.naef.jnlua.LuaRuntimeException: error loading module 'lfs' from file '.\lfs.dll':
    %1 is not a valid Win32 application.

    at com.naef.jnlua.LuaState.lua_pcall(Native Method)
    at com.naef.jnlua.LuaState.call(LuaState.java:555)
    at org.eclipse.ldt.support.lua51.internal.interpreter.JNLua51Launcher.run(JNLua51Launcher.java:128)
    at org.eclipse.ldt.support.lua51.internal.interpreter.JNLua51Launcher.main(JNLua51Launcher.java:143)

Следует отметить пару моментов: я пытаюсь использовать эту DLL в интерпретаторе Eclipse LDT. DLL скомпилирована для LUA 5.1, а Eclipse использует LUA 5.1. Любые идеи, что я делаю неправильно?


person JCricket    schedule 06.02.2016    source источник
comment
Тот же require("lfs") работает из обычного интерпретатора Lua?   -  person Paul Kulchenko    schedule 07.02.2016
comment
Да, это так. Спасибо за комментарий, заставил меня переосмыслить, почему это не удалось (см. Ответ ниже)   -  person JCricket    schedule 12.02.2016


Ответы (1)


Вот и получается, что я не понял, что LDT для Eclipse включает встроенную версию Lua, основанную на jnLua. Используя LuaRocks, я скомпилировал включенную версию с LuaRocks, которая является более ванильным lua.

Я уверен, что есть способ решить эту проблему, настроив LuaRocks на использование интерпретатора jnLua, но более быстрый способ состоял в том, чтобы просто добавить включенную версию LuaRocks в качестве интерпретатора, используемого в Eclipse.

В настройках Lua-> Interpreters добавьте новый. Для исполняемого файла просто перейдите к включенному интерпретатору LuaRocks Lua (lua5.1.exe). Как только я обновил свои профили запуска, чтобы использовать этот новый интерпретатор, все заработало нормально.

person JCricket    schedule 12.02.2016