C++ 链接两个不同的标准c+安全吗+;一个项目中的图书馆

C++ 链接两个不同的标准c+安全吗+;一个项目中的图书馆,c++,ios,C++,Ios,我正在构建带有链接错误的iOS项目。我的项目链接到一些第三方静态库。他们使用不同的标准C++库,一个是代码> LBSTDC++< /COD>,另一个是 LBC++ 针对其中任何一个的链接都会导致其他库中的链接错误,因此我在目标中链接了这两个库,命令行是-lstdc++-lc++ 现在它构建成功了,但我想知道它是否会导致运行时错误,有人能解释一下吗?提前谢谢。不,不安全。事实上,这是一种直接违反法律的行为。ODR说,除其他外,在整个程序中,任何非内联函数最多只能有一个定义。链接标准库的两个不同实现

我正在构建带有链接错误的iOS项目。我的项目链接到一些第三方静态库。他们使用不同的标准C++库,一个是代码> LBSTDC++< /COD>,另一个是 LBC++ 针对其中任何一个的链接都会导致其他库中的链接错误,因此我在目标中链接了这两个库,命令行是
-lstdc++-lc++


现在它构建成功了,但我想知道它是否会导致运行时错误,有人能解释一下吗?提前谢谢。

不,不安全。事实上,这是一种直接违反法律的行为。ODR说,除其他外,在整个程序中,任何非内联函数最多只能有一个定义。链接标准库的两个不同实现将违反此规则。

能否举例说明在什么情况下不安全。统一这两个库是一项艰巨的工作,它们来自第三方,因此如果不会出现可怕的问题,我更愿意将它们链接起来。一个不安全的示例:您的程序可能会使用其中一个实现分配资源,然后使用另一个实现发布资源。或者其中一个实现可能会不知不觉地调用另一个实现。或者,这两个实现可能对两个“不同”的全局变量或类静态使用相同的名称,并相互干扰。这是不安全的,不能这样做,完全停止。如果你链接两个库,你的程序可能会表现出未定义的行为。我很好奇为什么链接两个库时没有重复的符号错误。这两个库是否有不同的分配和释放方法名称,如果有,我认为是安全的。:)你不安全。请不要试图用手解决这个问题。也许你可以解释一下你陷入这种情况的最初原因,我们可以在另一个问题中解决这个问题?这可能也会有帮助:谢谢,我会尽力避免双重链接:)