I don't understand your point and I think you're incorrect on certain things.
There's very good reason why the ABI is not standardized. Contrary to popular belief, the ABI for C is also not standardized. It's just assumed that there is no symbol mangling which keeps things simple (but also prevents function name reuse, perhaps a good thing).
You can write modules in C++. Hell, you can write modules in D, Haskell, and various other languages people will otherwise tell you that you cannot. It simply has to export C-style symbols (literally the only requirement).