3
說我有一個應用程序,動態鏈接到firstlib.so firstlib.so鏈接到secondlib.so,我的應用程序也會看到secondlib.so的符號/功能?如果是,我該如何防止(我想避免人們混淆符號和功能)?間接鏈接庫的符號可見性
說我有一個應用程序,動態鏈接到firstlib.so firstlib.so鏈接到secondlib.so,我的應用程序也會看到secondlib.so的符號/功能?如果是,我該如何防止(我想避免人們混淆符號和功能)?間接鏈接庫的符號可見性
是的,您的應用程序將看到來自secondlib.so
的符號。
除非您另有要求,否則每個庫中的每個符號都放在進程的全局符號表中。
您可能想要使用dlopen
和RTLD_LOCAL
來防止這種情況,但要考慮到它可能會對代碼產生一些影響。
我在過去遇到過的一種這樣的效應是dynamic_cast
在特定情況下可能不起作用。
命名空間的使用是否有幫助? –