qua*_*dev 5 c++ stl binary-compatibility
假设我用C++编写了一个DLL,并希望导出一个带有std :: vector参数的方法.我希望不同STL版本之间的任何二进制兼容性吗?
我不知道版本之间兼容性的任何保证,甚至在同一编译器上的发布和调试之间也没有.
一种解决方案是为向量创建包装器.创建一个具有容器所需的所有函数的类,并根据私有向量的操作实现它们,私有向量是该类的唯一成员.保留DLL中的所有类代码.
如果您的意思是同一编译器的更新版本中包含的版本之间,是的,它可以(并且将会)在某些情况下工作,但您必须小心。还有一些特殊情况,例如 Windows 上的英特尔和微软编译器——英特尔非常小心地维护二进制兼容性,至少当我尝试过时,它总是工作得很好。
对于大多数其他情况,答案是否定的。