say У меня есть приложение, которое динамически связывается с firstlib.so, а firstlib.so ссылки на secondlib.so, будет ли мое приложение также видеть символы/функции secondlib.so? Если да, то как я могу это предотвратить (я хочу, чтобы люди не смешивали символы и функции)?Символьная видимость косвенно связанных библиотек
3
A
ответ
0
Да, в вашем приложении будут отображаться символы от secondlib.so
.
Каждый символ из каждой библиотеки помещается в глобальную таблицу символов процесса, если вы не запросили иначе.
Возможно, вы захотите использовать dlopen
с RTLD_LOCAL
, чтобы предотвратить это, но учтите, что это может иметь некоторые последствия для кода.
Один из таких эффектов, с которыми я столкнулся в прошлом, заключается в том, что dynamic_cast
может не работать при определенных обстоятельствах.
Помогло ли использование пространств имен? –