2016-02-06 5 views
0

Довольно новая для среды LUA, поэтому, надеюсь, я просто пропустил что-то действительно маленькое. Я пытаюсь скомпилировать LuaFileSystem с помощью LuaRocks и MinGW. После того, как в конце концов он был скомпилирован, я пытаюсь загрузить DLL с помощьюLua File System 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 в интерпретаторе LDT Eclipse. DLL скомпилирована против LUA 5.1, а Eclipse использует LUA 5.1. Любые идеи, что я делаю неправильно?

+1

Выполняет ли тот же 'require (" lfs ")' от обычного интерпретатора Lua? –

+0

Да, да. Спасибо за комментарий, заставил меня переосмыслить, почему это не удалось (см. Ответ ниже) – JCricket

ответ

0

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

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

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