有关背景,请参阅符号可见性、异常、运行时错误。
我有一组完全由我自己控制的 Linux DSO。我希望在他们之间共享 STL 容器。我遇到过神秘的 SIGSEGV 问题,这些问题似乎与 ODR 违规有关,而这些违规又是由不可见的符号引起的。
可能这里唯一明智的答案是将所有这些代码收集到一个大的 DSO 中,或者放弃共享 STL 容器。但是,这个问题的目的是寻找替代方案。如果根本问题是默认可见性规则,是否可以更改默认可见性规则以使其正常工作?我不太关心“扔”,只关心容器操作。是的,我知道容器可以抛出,但我准备进行防御性编码以避免它。