2

f2py を使用して、netcdf ライブラリを使用する Fortran コードをコンパイルしようとしています。コンパイルは機能しているように見えますが、Python でモジュールをインポートしようとすると、次のエラー メッセージが表示されます。

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: ./cdfio_simple.so: undefined symbol: netcdf_mp_nf90_get_var_2d_fourbytereal_

コンパイル中に次の出力もあります。

:cdfio_simple:cdfio_simple.f90:cdfio_simple
get_useparameters: cdfio_simple によって使用されるモジュール netcdf 情報がありません

私が使用しようとしているコードは次のとおりです(これは問題を示すための単純化されたコードであることに注意してください):

モジュール cdfio_simple
 netcdf を使用

  プライベート
  PUBLIC getvar

含む
  FUNCTION getvar (cdfile,cdvar)

    CHARACTER(LEN=*), INTENT(in) :: cdfile, & ! ファイル名
         & cdvar ! 変数
    REAL(KIND=4), DIMENSION(1442,1021) :: getvar ! 二次元リアル

    !! * ローカル変数
    INTEGER :: ncid、id_var
    INTEGER :: istatus
    CHARACTER(LEN=300) :: clvar

!f2py INTENT(in):: cdfile、cdvar

    clvar=cdvar

    istatus=NF90_OPEN(cdfile,NF90_NOWRITE,ncid)

    istatus=NF90_INQUIRE(ncid,unlimitedDimId=id_dimunlim)
    istatus=NF90_INQ_VARID (ncid,clvar,id_var)
    istatus=NF90_GET_VAR(ncid,id_var,getvar)

    istatus=NF90_CLOSE(ncid)
    getvar(:,:)=1

  終了関数 getvar

END MODULE cdfio_simple

それをコンパイルするには、次のコマンドを使用します。

f2py --fcompiler=intelem -c -I/usr/local/netcdf/include/ -L/usr/local/netcdf/lib -lnetcdff --f90flags=-fPIC -m cdfio_simple cdfio_simple.f90

これを正しく機能させる方法を知っている人はいますか? ご提案いただきありがとうございます。

ティム

4

1 に答える 1