require
またはpackage.loadlib
でLuaにロードできるライブラリを作成しようとしていますが、これまでのところ失敗しています。ライブラリ自体はC++になっていますが、ライブラリをロードする関数を適切にエクスポートするために必要なステップを実行したことが分かります。一言で言えば、これは私のC/C++コードの該当部分である:ライブラリはCMakeので生成されたMakefileから作成されているpackage.loadlibでライブラリを動的にロードできない
mylib = package.loadlib("libfoo.so", "luaopen_foo")
print(mylib) -- prints "nil"
:私のLuaスクリプトで
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;
}
}
、私はこれを持っています、およびCMakeLists.txtに私はそのような
add_library(foo STATIC ${foo_SOURCES})
add_library(foo MODULE ${foo_SOURCES})
add_library(foo SHARED ${foo_SOURCES})
として、さまざまなオプションでコンパイルしようとしていると、これらのオプションのどれもが動作しているように見えません。
この作業を行うための手順がありますか?私はオンラインで適切にこれを行う方法に関する情報を見つけるのが苦労しているので、どんな指導も歓迎です。私はgccを使ってUbuntuをコンパイルすることを使用しています。
"foo" "libfoo.so"(または共有ライブラリを使用する場合は "libfoo.a")のようなバリエーションを試してみました。しかし、私はちょうど "./libfoo.so"を試してみました。なぜ私は以前にそれを試してみることを考えなかったのか分かりません。 – Alex
ありがとう、./も私の問題を解決:)私は絶対パスを最初に試しても。 –