F2PY -Fehler: undefiniertes Symbol
Frage
Ich muss einen einfach fortran90 -Code mit F2Py einwickeln. Das FORTRAN -Modul "test.f90" ist
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
Und dann wickle ich es mit
f2py -m test -c test.f90
Aber wenn ich es in Python importiere
In [2]: import test
Es veranlasste mich mit einem Fehler, der sagte
ImportError: ./test.so: undefined symbol: ran2_
Irgendwelche Ideen, wie man es behebt? Vielen Dank.
Lösung
In Funktion Gasdev deklarieren Sie Ran2 als externe Funktion. Da Sie dann in einer solchen Funktion, die das Modul importieren, nicht verknüpfen, schlägt dies fehl.
Entfernen Sie stattdessen die Deklaration von RAN2 in Gasdev. In diesem Fall verwendet der Ran2 -Anruf die explizite Schnittstelle zur RAN2 -Funktion im Modul und alles funktioniert.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow