C++ 共享内存段是否兼容boost版本和编译器版本

C++ 共享内存段是否兼容boost版本和编译器版本,c++,visual-studio,boost,ipc,shared-memory,C++,Visual Studio,Boost,Ipc,Shared Memory,我正在维护一个旧项目,现在它必须与另一个使用较新版本的visual studio和较新版本的boost的项目构建一起工作。为了与其他进程通信,第一个项目使用共享内存段,因此现在第二个项目必须读取(并写入)该段,而不是创建它 这可能吗?有什么限制吗?我似乎没有找到任何关于它的文档 涉及的Boost版本:1.35和1.55(可能会更新为1.56) Visual Studio版本:8.0和2013。这是一个有趣的问题 在库级别,我假设不存在破坏性的更改,除非它们是文档 然而,还有很多事情需要考虑 你正

我正在维护一个旧项目,现在它必须与另一个使用较新版本的visual studio和较新版本的boost的项目构建一起工作。为了与其他进程通信,第一个项目使用共享内存段,因此现在第二个项目必须读取(并写入)该段,而不是创建它

这可能吗?有什么限制吗?我似乎没有找到任何关于它的文档

涉及的Boost版本:1.35和1.55(可能会更新为1.56)
Visual Studio版本:8.0和2013。

这是一个有趣的问题

在库级别,我假设不存在破坏性的更改,除非它们是文档

然而,还有很多事情需要考虑

  • 你正在共享内存

    这意味着您直接共享类的内存表示

    这意味着:

  • 意味着:

  • 你在分享ABI吗

    这已经排除了兼容性,即使您使用的编译器标志稍有不同,的编译器/库版本相同

  • 换句话说,除非控制两端并确保它们是二进制兼容的,否则不要共享内存

    总结 Boost的共享内存产品对数据表示没有任何说明(除了“如果你能将它链接到同一个二进制文件中,它就足以进行IPC访问”)。因此,如果您需要这种级别的隔离,请查看

    • 推进序列化
    • 结合更大的便携性