The problem is that Java and C++/MFC have very different ideas about how to handle various data items. For example, Java would like IDs to be immutable and shared among different objects that reference the same object by that ID. C++ doesn't want to share those IDs, because reference counting, well, not so much. So if you edit something in Java, the course of least resistance is to share the IDs, but then you need to make them all unique when you serialize them so that they work the way that C++ expects.
This turns out to be more difficult than you might think.