Errore di f2py: simbolo indefinito
Domanda
Ho bisogno di avvolgere un codice semplice Fortran90 con f2py. Il modulo FORTRAN "test.f90" è
module util
contains
FUNCTION gasdev(idum)
implicit none
INTEGER(kind=4), intent(inout) :: idum
REAL(kind=8) :: gasdev, ran2
print*,idum
gasdev = ran2(idum)
return
END FUNCTION
FUNCTION ran2(idum)
implicit none
INTEGER(kind=4), intent(inout) :: idum
REAL(kind=8) :: ran2
print*,idum
ran2=2.D0
return
END FUNCTION
end module util
e poi avvolgerlo con
f2py -m test -c test.f90
, ma quando ho importazione in python
In [2]: import test
che mi ha spinto con l'errore dicendo
ImportError: ./test.so: undefined symbol: ran2_
Tutte le idee su come risolvere il problema? Grazie.
Soluzione
In funzione gasdev si dichiara ran2 come una funzione esterna. Come poi non collegare in alcun tale funzione importando il modulo fallirà.
Al contrario, rimuovere la dichiarazione di ran2 in gasdev, nel qual caso la chiamata ran2 utilizza l'interfaccia esplicita alla funzione ran2 nel modulo, e tutto funziona.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow