Okay, so it's for class exporting rather than function exporting. Now I'm not an expert on exporting classes so I'll have to go and play around with this, but a couple of things come to mind:

If I want to export classes with member functions (possibly polymorphic classes) then name mangling is essential right? In which case if I want to import c++ classes into other code then I really do need to know the mangled name? - which sounds pretty inconvenient to me. Furthermore importing will be dependent on which compiler the dll was compiled on as, I believe, that different compilers manged c++ functions in different ways. i.e. if I try and import a dll into my code with a c++ class then the name I use to import than class will be dependent on where the dll was compiled.

Finally, with regards to your last sentence. How can the decorations be used by the compiler when compiling the calling routine? Surely this will all be happening at runtime as I'm dynamically linking?