Skip to content
Prev 182055 / 398500 Next

Calling Fortran from C++

Giura Gauss wrote:
It seems like you have a problem with function names which is a common
obstacle when interfacing C and Fortran. What usually happens is that a
trailing underscore gets added to fortran function names when they are
compiled. For example, consider a fortran subroutine declared as:

subroutine gaussQuad ( a, b, f1, f2 )

Since an underscore usually gets added and Fortran passes variables by
reference, the above subroutine would be seen by C as:

void gaussQuad_( a&, b&, f1&, f2& );

Furthermore, in C++ I think you h$ave to wrap the prototype in an extern
statement:

extern "C" { void gaussQuad_(a&, b&, f1&, f2& ); }

If you are running a unix system, you can check if your fortran function
names are receiving trailing underscores by running the nm utility on your
shared library. Ignore the leading underscores as they are expected by the C
compiler.

-Charlie




-----
Charlie Sharpsteen
Undergraduate
Environmental Resources Engineering
Humboldt State University