У меня есть один код fortran (gmf.f), который отлично работает, и я хочу вызвать его из c (tropo.c), чтобы использовать выходные данные подпрограммы fortran в моем коде c в качестве новых переменных.
subroutine gmf (dmjd,dlat,dlon,dhgt,zd,gmfh,gmfw)
C This subroutine determines the Global Mapping Functions GMF
C input data
C ----------
C dmjd: modified julian date (real)
C dlat: ellipsoidal latitude in radians (real)
C dlon: longitude in radians (real)
C dhgt: height in m (real)
C zd: zenith distance in radians (real)
C
C output data
C -----------
C gmfh: hydrostatic mapping function (real)
C gmfw: wet mapping function (real)
C
C Johannes Boehm, 2005 August 30
C Rev. Boehm 21 July 2011: latitude -> ellipsoidal latitude
C
implicit double precision (a-h,o-z)
... ... ... ... После некоторых математических вычислений в результате я получаю результаты gmfh и gmfw.
Так как я плохо разбираюсь в C, я написал один образец после некоторых исследований в Интернете. С чем я борюсь, я не знаю, как вызвать результаты из фортрана в c и увидеть их на экране... Буду очень признателен, если кто-нибудь поможет мне найти решение...
#include<stdio.h>
int main(int argc, char **argv) {
double gmf_(double *dmjd, double *dlat, double *dlon, double *dhgt, double *zd, double *gmfh, double *gmfw);
double dmjd=53120;
double dlat=38.25;
double dlon=42.25;
double dhgt=700.25;
double zd=60.0;
??? double result???? = gmf_(&dmjd, &dlat, &dlon, &dhgt, &zd, &gmfh, &gmfw);
return;
}
наконец я выполню в cygwin
gfortran -c gmf.f
gcc -c тропо.с
gfortran -o решить gmf.o tropo.o
./решить
и увидите результаты на экране: gmfh и gmfw.
implicit double precision
, является почти нарушением. - person Vladimir F   schedule 11.05.2016