C++ dlopen可能出现故障的潜在原因?

C++ dlopen可能出现故障的潜在原因?,c++,gcc,segmentation-fault,opensuse,dlopen,C++,Gcc,Segmentation Fault,Opensuse,Dlopen,除了共享对象不存在之外,dlopen可能会出错的原因有哪些 在我的例子中,我知道共享对象存在,但当我的程序使用dlopen加载它时,它会出错。我检查了我的lib文件夹,共享对象就在那里,路径都是正确的 handle = dlopen(libraryName.c_str(), RTLD_LAZY | RTLD_GLOBAL); gdb bt: #0 0x00000000001b94f5 in ?? () #1 0x00007fffefd96db6 in __do_global_cto

除了共享对象不存在之外,dlopen可能会出错的原因有哪些

在我的例子中,我知道共享对象存在,但当我的程序使用dlopen加载它时,它会出错。我检查了我的lib文件夹,共享对象就在那里,路径都是正确的

    handle = dlopen(libraryName.c_str(), RTLD_LAZY | RTLD_GLOBAL);
gdb bt:

#0  0x00000000001b94f5 in ?? ()
#1  0x00007fffefd96db6 in __do_global_ctors_aux () from /usr/local/lib/MY_LIB2.so
#2  0x00007fffefcf82c3 in _init () from /usr/local/lib/MY_LIB2.so
#3  0x00007fffed69c6c8 in ?? () from /usr/local/lib/MY_LIB1.so
#4  0x00007ffff7de9dc4 in call_init () from /lib64/ld-linux-x86-64.so.2
#5  0x00007ffff7de9ef6 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#6  0x00007ffff7dedf43 in dl_open_worker () from /lib64/ld-linux-x86-64.so.2
#7  0x00007ffff7de9c36 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#8  0x00007ffff7ded7ca in _dl_open () from /lib64/ld-linux-x86-64.so.2
#9  0x00007ffff5c5af26 in dlopen_doit () from /lib64/libdl.so.2
#10 0x00007ffff7de9c36 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2
#11 0x00007ffff5c5b4cf in _dlerror_run () from /lib64/libdl.so.2 
#12 0x00007ffff5c5afc1 in dlopen@@GLIBC_2.2.5 () from /lib64/libdl.so.2
#13 0x00007ffff6ecef7e in mynamespace::Factory::attachModule (this=0x61d440,    libraryName=...) at Factory.cpp:324
#14 0x00007ffff6ecefe6 in mynamespace::Factory::attachFunction (this=0x61d440, functionName=..., moduleName=...) at Factory.cpp:343
#15 0x00007ffff6ecdd16 in mynamespace::Factory::ReadFile (this=0x61d440, x=...) at Factory.cpp:111
#16 0x00007ffff6ecda62 in mynamespace::Factory::ReadDirectory (this=0x61d440, x=...) at Factory.cpp:79
#17 0x00007ffff6ecdc66 in mynamespace::Factory::ReadDirectory (this=0x61d440, x=0x417901 "/usr/local/lib/") at Factory.cpp:105

#18 0x0000000000410637 main(argc=2,argv=0x7fffffffdd58)main.cpp:78

除了将库加载到内存中并修复引用之外,运行时链接器还运行初始化器,例如标记为
uu attribute_uu((构造函数))
的函数、初始化函数(如果使用
-Wl,-init,
指定),和全局对象的构造函数。您的回溯表明其中一个正在失败


具体来说,
\u do\u global\u ctors\u aux
为全局对象运行构造函数。检查这些。

代码?例子?请包括一些可能有帮助的内容。损坏的路径参数?
Factory.cpp:324
Factory.cpp:343
Factory.cpp:111
Factory.cpp:79
Factory.cpp:105
。你已经检查过你的代码了吗?你已经看过了吗?不幸的是,我们大多数人还没有掌握千里眼。图书馆名称和所有通过罚款。我已经看了dlopen主页。似乎对我没什么帮助。dlopen是否需要任何使用要求才能正常工作?我们有两种可能性:关闭此问题。或者你发布一些相关的代码。因为segfaulting的可能原因包括糟糕的编程、错误的库、损坏的硬件和太阳风。