erreur f2py: symbole non défini
Question
Je dois envelopper un code simple Fortran90 avec f2py. Le module Fortran "test.f90" est
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
et puis je conclurai avec
f2py -m test -c test.f90
mais quand je l'importer en python
In [2]: import test
il m'a poussé avec l'erreur en disant
ImportError: ./test.so: undefined symbol: ran2_
Toutes les idées sur la façon de résoudre ce problème? Merci.
La solution
En fonction gasdev vous déclarez RAN2 comme une fonction externe. Comme vous alors ne liez pas dans une telle fonction importation du module échouera.
Au lieu de cela, supprimer la déclaration de RAN2 dans gasdev, auquel cas l'appel RAN2 utilise l'interface explicite à la fonction RAN2 dans le module, et tout fonctionne.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow