Я пытаюсь передать один массив размера из FORTRAN программы C.Невозможно передать массив из FORTRAN на C
Функция C называется, но ценности, которые она держит являются мусором. Но если я пытаюсь вызвать ту же функцию с помощью целочисленной переменной, я могу передать требуемое значение. Может ли кто-нибудь помочь мне с этим?
код я использую похож на этот
Файл: fortran_prog.f
program test
real*4 :: a(4)
data a/1,2,3,4/
call test_func(a)
end program test
Файл: c_prog.c
int test_func(double a[]) {
int i;
for(i=0;i<4;i++) {
printf("%f\n",a[i]);
}
return 0;
}
С какой платформой и конкретными компиляторами это связано? – wallyk
Я запускаю их на Linux. Для программы C я использую gcc, а для FORTRAN я использую ifort – arunr
. Способ сделать это в современную эпоху - с привязкой ISO ISO Fortran. Это часть стандарта языка Fortran и обеспечивает связь между переносимыми языками. Посмотрите тег http://stackoverflow.com/questions/tagged/fortran-iso-c-binding для многих примеров. –