undefined symbol
ライブラリを動的にロード中にエラーが発生しました。このエラーを生成するコード スニペットは次のとおりです。
int main ()
{
void *lib_handle = NULL;
MyClass* (*create)();
void (*destroy)(MyClass*);
char *error;
lib_handle = dlopen ("./libshared.so", RTLD_LAZY);
if (lib_handle == NULL)
{
fprintf(stderr, "%s\n", dlerror());
exit(1);
}
create = (MyClass* (*)()) dlsym(lib_handle, "create_object");
if ((error = dlerror()) != NULL)
{
fprintf(stderr, "%s\n", error);
exit(1);
}
destroy = (void (*)(MyClass*)) dlsym(lib_handle, "destroy_object");
MyClass *myClass = (MyClass*) create;
destroy(myClass);
dlclose(lib_handle);
}
しかし、上記のコードにコメントを付けてライブラリパスをエクスポートするだけでライブラリをロードすると、すべてが魅力的に機能します。
動的リンクの場合、コマンド プロンプトで次のコマンドを使用しています。
g++ -Wl,--export-dynamic shared_user.cpp -ldl
どんな助けでも大歓迎です。