如何在 LUA 5.3 中使用 luaXML

我要使用 LUA 并且我的目标是运行一个使用 lausocket 和 luaXML 完成任务的脚本。

我使用的是 Windows 2012 Server 64bit,我已经在我的 IBM IDOL 11 文件夹中有 LUA 编译器两个文件:

  • lua53.exe
  • lua53.dll

问题是我没有任何 LUA 抬头目录,以指向安装 luarocks,所以我从官方 LUA 5.3.4 中获取了头目录。我成功地在系统上安装了 Windows 的 luarocks 2.4.4,并且我用命令成功地安装了 luasocket:

c:\luarocks install luasocket

问题出现在 luaXML 中。

使用命令

c:\luarocks install luaxml

我得到以下错误

Installing https://luarocks.org/luaxml-101012-1.src.rock
C:\Program_Files\mingw-w64\x86_64-8.1.0-posix-sjlj-rt_v6-rev0\mingw64\bin\gcc.exe -O2 -c -o LuaXML_lib.o -IC:/Program Files (x86)/lua/5.3/include LuaXML_lib.c
LuaXML_lib.c: In function 'Xml_eval':
LuaXML_lib.c:284:17: warning: implicit declaration of function 'lua_objlen'; did you mean 'lua_len'? [-Wimplicit-function-declaration]
    int newIndex=lua_objlen(L,-1)+1;
                 ^~~~~~~~~~
                 lua_len
LuaXML_lib.c: In function 'luaopen_LuaXML_lib':
LuaXML_lib.c:415:2: warning: implicit declaration of function 'luaL_register'; did you mean 'lua_register'? [-Wimplicit-function-declaration]
  luaL_register(L, "xml", funcs);
  ^~~~~~~~~~~~~
  lua_register
C:\Program_Files\mingw-w64\x86_64-8.1.0-posix-sjlj-rt_v6-rev0\mingw64\bin\gcc.exe -shared -o LuaXML_lib.dll LuaXML_lib.o C:/MF_IDOLServer/cfs/lua_ide_files/bin/lua53_win64/lua53.dll -lm
LuaXML_lib.o:LuaXML_lib.c:(.text+0xd23): undefined reference to `lua_objlen'
LuaXML_lib.o:LuaXML_lib.c:(.text+0xf20): undefined reference to `lua_objlen'
LuaXML_lib.o:LuaXML_lib.c:(.text+0x1103): undefined reference to `luaL_register'
collect2.exe: error: ld returned 1 exit status

Error: Build error: Failed compiling module LuaXML_lib.dll

我搜索了这个错误,并发现这是由于 luaXML lib 和 lua 5.3 不兼容导致的,luaxml-101012-1 和 luaxml-101012-2 只支持 lua 5.1,但不支持 lua 5.3。

因此,我尝试使用 luaxml 库的最新版本:

luarocks install luaxml 130610-1

结果如下所示:

Error: luaxml 130610-1 仅支持 Lua 5.2,但不支持 Lua 5.3

我应该如何安装系统上的 luaXML 并运行我所拥有的 .lua 脚本呢?

谢谢您提供任何建议!

点赞