質問

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関数に明示的なインターフェイスを使用し、すべてが機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top