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. Есть идеи, что я делаю не так?
1 ответ
Оказывается, мне не удалось понять, что LDT для Eclipse включает в себя встроенную версию Lua на основе jnLua. Используя LuaRocks, я компилировал против включенной версии с LuaRocks, который является более ванильным Луа.
Я уверен, что есть способ решить эту проблему, настроив LuaRocks на использование интерпретатора jnLua, но более быстрый способ заключался в добавлении включенной версии LuaRocks в качестве интерпретатора, используемого в Eclipse.
В Настройки, Lua-> Интерпретаторы, Добавить новый. Для исполняемого файла просто перейдите к включенному LuaRocks Lua интерпретатору (lua5.1.exe). Как только я обновил свои профили пробега, чтобы использовать этот новый интерпретатор, он работал нормально.