4

単純なfortran90コードをf2pyでラップする必要があります。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_

それを修正する方法について何かアイデアはありますか?ありがとう。

4

1 に答える 1

6

関数gasdevで、ran2を外部関数として宣言します。そのような関数にリンクしないと、モジュールのインポートは失敗します。

代わりに、gasdevでran2の宣言を削除します。この場合、ran2呼び出しは、モジュール内のran2関数への明示的なインターフェイスを使用し、すべてが機能します。

于 2011-10-18T09:06:51.690 に答える