2016-07-12 31 views
1

私はコマンドでf2py使用しようとしています:f2pyのERF関数LNK2019未解決の外部シンボルエラー

C:\Python27\python.exe setup.py build_ext --inplace --fcompiler=g95 

私のFortranのファイルは次のとおりです。

module test_f90 

implicit none 

real *8 :: delta 

contains 

subroutine test_f(val, r) 
    real*8, intent(out) :: val 
    real*8, intent(in) :: r 
    val = 0.5*(1 + erf(r/delta)) 
end subroutine 

end module test_f90 

しかし、私はこのエラーを持っている:

test_fmod.o : error LNK2019: unresolved external symbol __g95_erf_r8 rÚfÚrencÚ d 
ans la fonction _test_f90_MP_test_f 
_test_f90.pyd : fatal error LNK1120: 1 externes non rÚsolus 
error: Command "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.e 
xe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\P 
Cbuild /LIBPATH:C:\Python27\PC\VS9.0 /LIBPATH:C:\Python27\libs /LIBPATH:C:\Pytho 
n27\PCbuild /LIBPATH:C:\Python27\PC\VS9.0 /EXPORT:init_test_f90 build\temp.win32 
-2.7\Release\build\src.win32-2.7\_test_f90module.obj build\temp.win32-2.7\Releas 
e\build\src.win32-2.7\fortranobject.obj build\temp.win32-2.7\Release\test_fmod.o 
build\temp.win32-2.7\Release\build\src.win32-2.7\_test_f90-f2pywrappers2.o /OUT 
:_test_f90.pyd /IMPLIB:build\temp.win32-2.7\Release\build\src.win32-2.7\_test_f9 
0.lib /MANIFESTFILE:build\temp.win32-2.7\Release\build\src.win32-2.7\_test_f90.p 
yd.manifest" failed with exit status 1120 

val = 0.5*(1 + erf(r/delta))val = 0.5*(1 + sin(r/delta))に置き換えた場合、f2pyはうまく機能します。だから問題はerfの機能に起因するが、私は理由を知らない。私はsinerfは同じ種類の機能だと思いましたか?

+0

私は最初の結論が間違っていたので、G95で 'erf()'を使って簡単なプログラムをコンパイルできます。コンパイラにはこの関数が含まれています。 –

+0

私はLinuxで 'f2py -c erf.f90 -m erf -fcompiler = g95 -f90flags =" -fPIC "'を使って単純なf2pyモジュールをコンパイルすることさえできました。私はg95版 'gcc version 4.0.3(g95 0.93!)'を持っています。あなたのバージョンを確認してください。 –

+0

g95で簡単なプログラムをコンパイルしてみてください: 'print *、erf(1.d0);最後に –

答えて

0

gcc 4.1.2とg95 0.93を使用して、OPで報告されているように、これを成功させます。

関連する問題