Thanks. This is a way to solve the problem of allowing objects to cross the DLL boundary in a language neutral way. COM will do it, but you can not extend your objects. If you simply wrap them (interfaces or routines) in the native language you then gain all the advantages offered by that language. A few hoops, but it works without being overly complicated.

On the c++ side I dynamically bind to the DLL. You just have to include the header/src in your project and now it works with virtually all modern c++ compilers without having to deal with the incompatible .obj formats and name mingling between different c++ compilers. Result: you can use in c++ classes made in Delphi in a natural c++ way (or vise versa).