3
说我有一个应用程序,动态链接到firstlib.so firstlib.so链接到secondlib.so,我的应用程序也会看到secondlib.so的符号/功能?如果是,我该如何防止(我想避免人们混淆符号和功能)?间接链接库的符号可见性
说我有一个应用程序,动态链接到firstlib.so firstlib.so链接到secondlib.so,我的应用程序也会看到secondlib.so的符号/功能?如果是,我该如何防止(我想避免人们混淆符号和功能)?间接链接库的符号可见性
是的,您的应用程序将看到来自secondlib.so
的符号。
除非您另有要求,否则每个库中的每个符号都放在进程的全局符号表中。
您可能想要使用dlopen
和RTLD_LOCAL
来防止这种情况,但要考虑到它可能会对代码产生一些影响。
我在过去遇到过的一种这样的效应是dynamic_cast
在特定情况下可能不起作用。
命名空间的使用是否有帮助? –