C++ 共享对象符号解析

C++ 共享对象符号解析,c++,linux,g++,shared-libraries,symbols,C++,Linux,G++,Shared Libraries,Symbols,假设我有两个静态libS1和S2,它们是相同lib的不同版本,具有相同的C(而不是C++)接口,尽管实现不同。2个共享库D1和D2,每个库仅链接到S1或S2。假设一个应用程序A链接到S2,后者是最新的静态libs,并使用dlopen动态加载D1和D2。D1是否只使用S1s函数,或者是否有任何方法强制使用S2s函数?这个设置会出什么问题吗 编辑:创建共享对象S是否是避免此问题的好方法,因为D1和D2都可以链接到S D1是否只使用S1s函数,或者是否有任何方法强制使用S2s函数 是,D1将使用S1功

假设我有两个静态lib
S1
S2
,它们是相同lib的不同版本,具有相同的C(而不是C++)接口,尽管实现不同。2个共享库
D1
D2
,每个库仅链接到
S1
S2
。假设一个应用程序
A
链接到
S2
,后者是最新的静态libs,并使用
dlopen
动态加载
D1
D2
D1
是否只使用
S1
s函数,或者是否有任何方法强制使用
S2
s函数?这个设置会出什么问题吗

编辑:创建共享对象
S
是否是避免此问题的好方法,因为
D1
D2
都可以链接到
S

D1
是否只使用
S1
s函数,或者是否有任何方法强制使用
S2
s函数

是,
D1
将使用
S1
功能。 不,您不能强制它使用
S2
函数

这个设置会出什么问题吗


这取决于您的库中有什么。

您所说的库中有什么是什么意思?我不清楚。我的意思是它取决于
S1
S2
中的内容。例如,如果它们具有全局静态数据,则不会在两者之间共享。这可能不是你想要的。