質問
F2PYでSimply fortran90コードをラップする必要があります。 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
そして、私はそれを包みます
f2py -m test -c test.f90
しかし、Pythonでインポートするとき
In [2]: import test
それは私にエラーを言って私に促しました
ImportError: ./test.so: undefined symbol: ran2_
それを修正する方法に関するアイデアはありますか?ありがとう。
解決
関数Gasdevでは、RAN2を外部関数として宣言します。そのような関数にリンクしないと、モジュールをインポートすることは失敗します。
代わりに、GasdevでRAN2の宣言を削除します。この場合、RAN2コールは、モジュールのRAN2関数に明示的なインターフェイスを使用し、すべてが機能します。
所属していません StackOverflow