AFAIK, the Visual C++ name mangling has been stable from release to release.
The main problem is that code compiled with one version has to be linked with the CRTL for that version, and mixing code from multiple versions into the same DLL or EXE won't work because then both object codes expect different RTL routines.
On the other hand, if you link seperate DLLs containing the different libraries it should work. After all, that's the whole point of DLLs.
In that scenario, I would recommend using only extern "C"
APIs and (if this is 32-bit code) explicitly specifying the calling convention (__stdcall__
or WINAPI
or _cdecl
...)
Also, there's a subtle gotcha when your application has multiple copies of the CRTL: you have multiple heaps! and if an object is allocated on one heap and freed to a different heap, the heap is immediately corrupted and you will crash.
All in all, if you can get them to recompile with your compiler, that's the simplest thing.