我正在使用f2py
来实现一些fortran 77例程。具体来说,我想为2D数组实现逐列自动缩放功能。
SUBROUTINE AUTOSCALE(E,NR,NC,EA,N,M,MX,SX,SSX)
INTEGER NR,NC,N,M,I,J
REAL*8 E(NR,NC),EA(N,M),MX(M),SX(M),SSX(M)
DO 1 I=1,NC
MX(I)=0D0
SX(I)=0D0
1 SSX(I)=0D0
DO 3 I=1,NR
DO 2 J=1,NC
MX(J)=MX(J)+E(I,J)
2 SX(J)=SX(J)+E(I,J)**2
3 CONTINUE
DO 4 J=1,NC
MX(J)=MX(J)/NR
SX(J)=(SX(J)-NR*MX(J)**2)/(NR-1)
SX(J)=DSQRT(SX(J))
4 CONTINUE
DO 6 I=1,NR
DO 5 J=1,NC
EA(I,J)=E(I,J)-MX(J)
EA(I,J)=EA(I,J)/SX(J)
SSX(J)=SSX(J)+E(I,J)**2
5 CONTINUE
6 CONTINUE
RETURN
END
只有在我使用DSQRT
调用注释该行时,例程才能正确转换为python。如果我用等效函数替换它,例如SQRT
,**(0.5)
,**(1./2.)
我总是会遇到奇怪的链接错误。请参阅下面的详细信息。
找到可执行文件C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ BIN \ link.exe mingw32.lib(lib32_libmingw32_a-pesect.o):错误LNK2005:已在MSVCRT.lib(pesect.obj)中定义的ValidateImageBase mingw32.lib(lib32_libmingw32_a-pesect.o):错误LNK2005: __FindPESection已经在MSVCRT.lib(pesect.obj)中定义了mingw32.lib(lib32_libmingw32_a-pesect.o):错误LNK2005: __IsNonwritableInCurrentImage已经在MSVCRT.lib中定义(pesect.obj)创建库 C:\ Users \用户PolGia0 \应用程序数据\本地的\ Temp \ tmpvzoar0ou \发布\用户\ PolGia0 \应用程序数据\本地的\ Temp \ tmpvzoar0ou \ src.win32-3.4 \ foo.lib 和对象 C:\ Users \用户PolGia0 \应用程序数据\本地的\ Temp \ tmpvzoar0ou \发布\用户\ PolGia0 \应用程序数据\本地的\ Temp \ tmpvzoar0ou \ src.win32-3.4 \ foo.exp mingw32.lib(lib32_libmingw32_a-pesect.o):错误LNK2019:未解决 函数中引用的外部符号__image_base __FindPESectionByName。\ foo.pyd:致命错误LNK1120:1个未解析的外部
我不明白。在我的系统设置中可能出现了问题? 有什么建议?谢谢 PS如果它有帮助,我在Windows 7 64位PC上使用32位的Anaconda 2.3.0。