[英]Calling Fortran 77 from C
我在fortran 77中有一個ema函數。如何從C調用fortran函數。我知道在fortran 2003中有一個iso_c_bindings,但是我需要一些用於舊77標准的解決方案。
subroutine ema(inarray,leninarray,n,outarray,lenoutarray)
integer leninarray, lenoutarray, n, i
double precision inarray(leninarray), outarray(lenoutarray)
do 10 i = n+1, leninarray
outarray = inarray(i) * (1/n) + outarray(i-1) * (1-(1/n))
continue
end
感謝您的幫助
Fortran的調用約定與C幾乎相同,但有以下區別:
例如,如果您有一個fortran例程
subroutine ema(inarray,leninarray,n,outarray,lenoutarray)
變成
void ema(double*, int*, int*, double*, int*)
要么
void ema_(double*, int*, int*, double*, int*)
取決於您的機器。 在C ++中,您想要
extern "C" void ema(double*, int*, int*, double*, int*)
要么
extern "C" void ema_(double*, int*, int*, double*, int*)
當將索引傳遞給例程時,不要忘記fortran數組從1開始。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.