STL容器的二进制兼容性

时间:2011-04-20 20:35:08

标签: c++ stl binary-compatibility

假设我用C ++编写了一个DLL,并希望导出一个带有std :: vector参数的方法。我可以希望不同STL版本之间的任何二进制兼容性吗?

3 个答案:

答案 0 :(得分:6)

我不知道版本之间兼容性的任何保证,甚至在同一编译器的发布和调试之间也没有。

一种解决方案是为向量创建包装器。创建一个具有容器所需的所有函数的类,并根据私有向量的操作实现它们,私有向量是该类的唯一成员。将所有类代码保存在DLL中。

答案 1 :(得分:4)

绝对不是!如果使用相同编译器的不同版本编译,则您甚至不能依赖相同版本的兼容STL。

答案 2 :(得分:3)

如果您指的是同一编译器的更新版本中包含的版本之间,是的,它可以(并且将会)在某些情况下工作,但您必须小心。还有一些特殊情况,例如Windows上的英特尔和微软编译器 - 英特尔非常谨慎地保持二进制兼容性,至少在我尝试过的时候,它总能很好地工作。

对于大多数其他情况,答案是否定的。