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.

Était-ce utile?

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
scroll top