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
これを正しく機能させる方法を知っている人はいますか? ご提案いただきありがとうございます。
ティム