Ultimately I am trying to write an IPC calculator making use of Fortran to calculate and C to pass the data between the two Fortran programs. When I am done it will hopefully look like:
Fortran program to pass input -> Client written in C -> Server written in C -> Fortran program to calculate input and pass ans back
The C client/server part is done, but at the moment I am stuck trying to write a program that takes input in a Fortran program, passes it to a C program that calculates the answer. However, I see som weird behavior.
Fortran program
program calculator
!implicit none
! type declaration statements
integer x
x = 1
! executable statements
x = calc(1,1)
print *, x
end program calculator
C function
int calc_(int *a, int *b ) {
return *a+*b;
}
I have written a main program that verifies that int calc_() does indeed return 2 when called as calc_(1,1) in C, but when I run the program I get the output from Fortran.
I am using this makefile # Use gcc for C and gfortran for Fortran code. CC=gcc FC=gfortran
calc : calcf.o calcc.o
$(FC) -o calc calcf.o calcc.o
calcc.o : calcc.c
$(CC) -Wall -c calcc.c
calcf.o: calcf.f90
$(FC) -c calcf.f90
I cannot for the world figure out why this is the case, and it's driving me mad.