I have a problem trying to prepare a large simulation package, using
mixed F90 and C++ routines, to compile and build under GCC (g++, and
gfortran). The problem is I have a C++ function: Gauss() which is
called from an F90 routine:
x=gauss()
This package was made able to build under the Intel fortran compiler by
adding to the fortran file the Intel compile directive:
!DEC$ ATTRIBUTES ALIAS:'Gauss' :: gauss
I attempted to build this program using GCC where for F90 code the
gfortran compiler option -fno-underscoring was used.
Presently my fortran routine won't build. It gets the error:
485: undefined reference to `gauss'
So, my question is, is there a way in GCC to enable the linker to find
the C++ 'Gauss' method?
I don't know if the linker supports for this directly. But you can try
with the function attribute 'alias("target")' which is documented in
[1]. It creates a new name for the same routine, so you can call it
through the two names (the original, and the aliased).
In your case, you should define in your C++ file an alias to "Gauss"
which is called "gauss".
Besides, IIRC, ICC also supports this function attribute, so you
should be able to apply it transparently.
[1] http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html