Fab*_*ian 4 c++ abi static-libraries
我了解到,您不能一起使用由不同编译器编译的共享库,因为它们的 ABI 通常不兼容。当然例外的是如果你有一个纯C 接口,那么这是可能的。但是,我在这方面没有找到关于静态库的明确说明,因此提出这个问题。
我的问题是静态库是否有同样的问题。如果我的共享库链接到来自不同编译器的静态库,它会在运行时按预期进行编译和工作吗?或者它会编译并表现得很糟糕吗?或者它永远不会编译?
可能会发生多种类型的不匹配,包括:
int
在不同的操作系统上可以具有不同的宽度。std::string
,std::map
每个库供应商可以以不同的方式实现其他类,并且由于许多人使用其编译器供应商提供的标准库,因此可能会出现此问题。其中一些(例如名称修改)可能会导致构建失败。其他人可能看起来构建正常,但在运行时表现出意外。无论您使用静态链接还是动态链接,总体情况都是相同的。