Я пытаюсь создать библиотеку, которую можно загрузить в Lua с помощью require
или package.loadlib
, но до сих пор у меня не получилось. Сама библиотека находится на 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"
Библиотека создается из Makefile, сгенерированного CMake, и в CMakeLists.txt я попытался скомпилировать с различными параметрами, такими как
add_library(foo STATIC ${foo_SOURCES})
add_library(foo MODULE ${foo_SOURCES})
add_library(foo SHARED ${foo_SOURCES})
И ни один из этих параметров не работает.
Есть ли какие-то шаги, которые я пропускаю, чтобы сделать эту работу? Мне трудно найти информацию о том, как сделать это правильно в Интернете, поэтому любые рекомендации приветствуются. Я использую это Ubuntu с GCC для компиляции.