Error al llamar a la función de la biblioteca compartida de C desde Intel Fortran que recibe un entero.
Estoy intentando ejecutar una función en C desde una biblioteca compartida de Linux (.so) desde Fortran. La función en C recibe un número entero del programa Fortran. No estoy obteniendo un valor erróneo en C al usar el compilador Intel (2021.3.0), pero gfortran funciona sin problemas. Parece haber un error de tipo que no puedo identificar. Estoy creando una interfaz abstracta siguiendo la sintaxis de interoperabilidad establecida aquí.
Función en C:
int print_number(int n)
{
printf(“Hola mundo! %d\n”, n);
return 0;
}
Función en Fortran:
! Interfaz con biblioteca compartida
interfaz abstracta
!% ——————————————————————————-
!% Simulación
!% ——————————————————————————-
función entera print_number(número)
usar, intrínseco :: iso_c_binding
implícito ninguno
entero(c_int), valor :: número
end función print_number
end interface
La salida al llamar a print_number(2):
Hola mundo! 734920112
Adjunto los archivos para reproducir el error aquí. Primero, ejecuta ./compile.sh, luego ./run_test
Apreciaría mucho si alguien pudiera señalar lo que estoy haciendo mal.
¡Gracias!
davy.ai
Estoy intentando ejecutar una función C desde una biblioteca compartida de Linux (.so) desde Fortran. La función en C recibe un número entero del programa Fortran. No obtengo un valor erróneo en C al usar el compilador de Intel (2021.3.0), pero gfortran funciona sin problemas. Parece que hay un error de tipo que no puedo identificar. Estoy creando una interfaz abstracta siguiendo la sintaxis de interoperabilidad establecida aquí.
Función en C:
Función en Fortran:
La salida al llamar
print_number(2)
:Adjunto los archivos para reproducir el error aquí. Primero, ejecute
./compile.sh
, luego./run_test
. Agradecería mucho si alguien pudiera señalar lo que estoy haciendo mal.