I ran across Google Protocol Buffers quite some time ago in my regular pursuit of having a simple to use and efficient data exchange format that I would widely use in all my applications and tools. PB seemed quite promising in concept at that time, but I was too lazy to actually test it properly as the supplied Visual C++ projects always seemed outdated. However, It all changed quite recently, when I decided to spend some time with the project setup and managed to run a simple test (it was actually easier then expected, surely worth the effort).

First, there's a list of PB key features that I find crucial:

Data structures are described using a very simple .proto files (what a relief considering the verbosity of DTD/XSDs).

The data access classes can be generated for both of my favourite languages: C++ (run-time) and Python (tools).

PB sources can be directly dropped into and existing project (no need to maintain the countless number of lib variants on all the platforms, I find this very convenient in general as it dramatically reduces the maintenance cost, I'm a big fan of single-source-file amalgamated libs, but that's a completely different story...).

So here's a bunch of steps to follow if you want to get a nice self-contained VC2010 project ready to use (or you can just download the whole package HERE):