【发布时间】:2011-11-14 05:49:31
【问题描述】:
我正在尝试创建一个库,我可以使用require 或package.loadlib 将其加载到 Lua 中,但到目前为止我还没有成功。库本身是 C++ 的,但据我所知,我已经采取了必要的步骤来正确导出函数以加载库。简而言之,这是我的 C/C++ 代码的相关部分:
extern "C"
{
// This line is copied from http://gcc.gnu.org/wiki/Visibility
// it's actually in a header, including it here for brevity
#define EXPORT __attribute__((visibility("default")))
EXPORT int luaopen_foo(lua_State* L)
{
luaL_register(L, "Foo", fooL_table);
return 0;
}
}
在我的 Lua 脚本中,我有这个:
mylib = package.loadlib("libfoo.so", "luaopen_foo")
print(mylib) -- prints "nil"
该库是从 CMake 生成的 Makefile 创建的,在 CMakeLists.txt 中我尝试使用各种选项进行编译,例如
add_library(foo STATIC ${foo_SOURCES})
add_library(foo MODULE ${foo_SOURCES})
add_library(foo SHARED ${foo_SOURCES})
而且这些选项似乎都不起作用。
我是否缺少任何步骤来完成这项工作?我很难找到有关如何在网上正确执行此操作的信息,因此欢迎提供任何指导。我使用的是带有 gcc 的 Ubuntu 进行编译。
【问题讨论】: