5

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

4

3 回答 3

6

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

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

于 2011-04-20T20:40:18.720 回答
4

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

于 2011-04-20T20:40:34.257 回答
3

如果您的意思是在同一编译器的更新版本中包含的版本之间,是的,它可以(并且将会)在某些情况下工作,但您必须小心。还有一些特殊情况,例如 Windows 上的 Intel 和 Microsoft 编译器——Intel 非常小心地维护二进制兼容性,至少当我尝试过它时,它总是工作得很好。

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

于 2011-04-20T20:41:00.123 回答