【问题标题】:Are shared memory segments compatible across boost versions and compiler versions共享内存段是否在 boost 版本和编译器版本之间兼容
【发布时间】:2014-10-30 12:45:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: c++ visual-studio boost ipc shared-memory


    【解决方案1】:

    这是一个有趣的问题。

    在库级别,我假设不存在重大更改,除非它们是文档。

    但是,还有很多事情需要考虑。

    1. 你正在分享记忆

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

      这意味着:

    暗示:

    1. 您正在共享 ABI

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

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

    总结

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      • 2018-07-01
      • 1970-01-01
      相关资源
      最近更新 更多