我正在努力让IUP在Ubuntu上工作。我从sourceforge下载了二进制文件,并且这些库似乎在/usr/lib/libiup*.so中已经存在,但是当我编写如下脚本时:
require("iuplua")
iup.Message('Testing App!', 'Finished Successfully!')
我收到错误:
lua: attempt to call a nil value
stack traceback:
[C]: ?
[C]: in function 'require'
test.lua:1: in main chunk
[C]: ?
调查一下,我看到一条消息,注意到有人似乎修复了它 - 他们的“LD_LIBRARY_PATH没有指向正确的cd和im目录”或类似的东西。我似乎无法纠正LD_LIBRARY_PATH环境变量的问题。我在2008年看到另一个说明“IUPLua二进制文件有硬编码的lua字节码导致错误”。我试图从源代码编译,但是我遇到了与cd.h相关的错误。
任何帮助都会受到很大的欢迎。谢谢!
答案 0 :(得分:1)
这是你可以查看的内容,也许它会有所帮助。
当您使用 require 加载模块时,Lua使用包路径来确定在哪里查找模块。
package.path:Lua在哪里寻找.lua模块
package.cpath:Lua在哪里查找.so / .dll模块
请查看Lua手册的这一部分:Modules。具体来说, package.path 和 package.cpath 部分。
您可以查看当前路径是什么样的:
print(package.path.."\n"..package.cpath)
您可以添加以下路径:
package.path = package.path..";/usr/lib/?.lua"
package.cpath = package.cpath..";/usr/lib/?.so"