Lua 加载共享对象的路径

我正在使用Kubuntu 12.04下的lua 5.3beta。我使用swig包装了一个c扩展,并使用gcc4.9进行编译和链接。如果我将mylib.so放在与lua脚本相同的目录中:

require "mylib"

运行正常。但是如果mylib.so不在相同的目录中,则会收到错误消息

module 'mylib' not found

我将mylib的路径添加到LD_LIBRARY_PATH中,并在我的脚本中插入

package.path  = package.path .. ';' .. path2mylib .. '/?

使用

package.path  = package.path .. ';' .. path2mylib .. '/?.so

错误消息为:

mylib.so:1: unexpected symbol near '<\127>

我猜lua尝试加载mylib.so并假设它是lua脚本。似乎lua仅在某些标准路径中查找共享对象,包括./和添加到package.path的所有路径都被视为指向lua文件的路径。

有没有办法让lua加载我的c扩展而不将它放入标准库路径之一?

点赞
用户107090
用户107090

告诉 Lua 在哪里查找用 C 编写的库的路径变量是 package.cpath

package.path 是用 Lua 写的库。

2014-11-14 10:12:34