Boost is a library collection for C++. It seems to be considered as the standard library C++ should have shipped with in the beginning. In this case, Boost is used for interprocess communication between the game and the process managing the DMD.
The problem is that Boost seems to be C++ only. That's not a problem for 99% of what Boost is used for, but for interprocess communication we can end up with a process written in a different language than C++. More specifically, I'd like to write
the DMD slave (that works with all DMDs) in C# (and
DOF, the current standard for our solenoid/flasher/whateverelse is written in C# as well).
Looking at Boost's message queue code it seems to be using shared memory (I was hoping named pipes or something I would be able to grab without actually using Boost). I've tried compiling Boost as a DLL for loading through P-Invoke, but since all the IPC stuff are only header files, that didn't work.
Any idea from the devs about how to bridge this? Write my own DLL in C++ that wraps the two message_queue calls listed in your example? Or would consider supporting a protocol that can be used by other languages than C++? I already have the code for all DMDs working and don't want to rewrite everything in C++...
Nevertheless, awesome work guys. Finally a commercial pinball software studio that keeps its promises!