我正在使用 dlopen 在运行时加载共享库
dlopen("SharedLibarary1.so", RTLD_NOW | RTLD_GLOBAL);
在该共享对象中,我指的是在另一个共享库“SharedLibarary2.so”中定义的 const char*。
可执行文件和两个库都是使用 -rdynamic 构建的。
但是在使用 dlopen 时我仍然会遇到运行时错误:“/usr/lib/SharedLibarary1.so: undefined symbol”并指向损坏的 const char* 具有未定义的符号。
通过 GDB“信息共享”,我可以看到第二个库在出现错误时没有加载。
如果我在第一个库上执行 dlopen 之前在第二个库上执行该问题,那么这个问题会如何消失。
有没有更好的方法来强制加载器为未解析的符号加载第二个库?