2

I'm maintaining an old project, and now it has to work with another project build with a newer version of visual studio and a newer version of boost. To communicate with other processes, the first project uses a shared memory segment, so now the second project has to read this segment (and write to it) but not create it.

Is this possible? are there any restrictions? I don't seem to find any documentation about it.

Boost versions involved: 1.35 and 1.55 (it might be updated to 1.56) Visual Studio versions: 8.0 and 2013.

sehe
  • 374,641
  • 47
  • 450
  • 633
Sambatyon
  • 3,316
  • 10
  • 48
  • 65

1 Answers1

0

This is an interesting question.

On the library level, I'd assume that no breaking changes exist unless they were document.

However, there are many more things to take into account.

  1. You Are Sharing Memory

    This implies you're directly sharing memory representations of your classes.

    This implies:

Implies:

  1. You Are Sharing ABI

    This already rules out compatibility even if you happen to use slightly different compiler flags, with the same compiler/library versions.

In other words, don't share memory unless you control both ends and can make sure they are binary compatible.

SUMMARY

Boost's shared memory offerings say nothing about data representation (beyond "if you can link it into the same binary, it's good enough for IPC access"). So, if you need this level of isolation, look at

sehe
  • 374,641
  • 47
  • 450
  • 633