I'm not sure if you're talking about C++ ABIs or C ABIs?  If you're already using a C ABI, and you're getting incompatibilities, well I have nothing useful to say :-)

If you're talking about C++ ABIs, technically it's possible to use a Generator to drop-down into a C ABI, pump across the interface at a C level, function by function, then wrap back into C++ classes.

The advantage is that you decouple the classes on either side of the interface, so it's possible to add new methods to the classes without breaking anything.

(Warning: I have no idea to what extent what I just wrote relates to ghc etc.  I did make a generator to cross a C++ ABI boundary before, to link an msvc C++ dll with a mingw C++ exe:

http://spring.clan-sy.com/phpbb/viewtopic.php?t=7991
)