I have done a fair bit of interoperable program and data between C++ and
Ada95 with GNAT under Solaris, AIX and Linux and OCS PowerAda on AIX.  In
all these cases, the vendors provided examples that were sufficient to get
started.  (Start by looking for any documentation on an "Application Binary
Interface" among the compiler documentation you have - it may help you with
some of the following issues).

The most common issues are naming (source files, objects and internal
representation of functions / procedures).  Exportation of Ada names
generally requires putting them in the "C" style and declaring them as
externs within C++ as C names, so that the name mangling issues will all
resolve correctly.

Generally a C++ main has been required, with the C++ linker (when the
linkers differ), and some tricks are often pulled to do a transitive closure
on all the required Ada names and make them available to the linker.

The GNAT documentation has a nice little example that shows C++ calling Ada
calling C++.

But on XP and with FORTRAN, well, I dunno...

-- Karl --