gpt4 book ai didi

c++ - 检测/避免 g++ 符号冲突

转载 作者:太空宇宙 更新时间:2023-11-04 12:26:26 28 4
gpt4 key购买 nike

如果两个共享库都暴露相同的全局范围符号,有没有办法检测和避免?我们最近遇到了这样一种情况,我们有 libA.so 导出了 SuperCoolMethod()libB.so 也暴露了 SuperCoolMethod() 这会破坏所述方法的先前拷贝。这是在使用 g++ 4.0 及更高版本的 Linux 上。因此,如果您单独链接到 libA.so,一切都会按预期工作,但是一旦将 libB.so 添加到图片中,就会调用错误的方法,调用将失败导致正在执行的线程在没有通知我们潜在问题的情况下中止。通过反复试验,我们最终发现 SuperCoolMethod() 被破坏并通知了 libB.so 的供应商,以便 __attribute__((visibility("hidden"))) 可以应用于他们的方法拷贝。

最佳答案

因为这是 C++,所以每个库都应该在自己的命名空间中,这样就不会发生冲突。

关于c++ - 检测/避免 g++ 符号冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2233890/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com