f2py中的链接共享库

2024-06-16 03:14:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个指定的Fortran共享库:

C FILE: OTHER.F
      SUBROUTINE OTHER(FUN)
      EXTERNAL FUN 
      INTEGER I
      DO I=0,5
         PRINT *, FUN(I)
      ENDDO

      END SUBROUTINE
C END OF FILE OTHER.F

我编译如下:gfortran -shared -O2 other.f -o libother.so -fPIC

我现在有另一个模块:

^{pr2}$

我希望使用f2py将这个模块编译为python模块。为了达到这个目的,我输入了:

f2py -m callback -h callback.pyf callback.f

其次是:

f2py -c callback.pyf callback.f -L. -lother

然后我使用Python解释器运行:

import callback
callback.foo(lambda x: 1)

预期行为是:

  1. 打印“1”11次(b/c of foo
  2. 打印“1”六次(在foo内对other的调用的b/c)
  3. return“11”

相反,观察到的行为是:

ImportError: libother.so: cannot open shared object file: No such file or directory

如果我做了nm callfun.so,我可以看到other是未定义的


Tags: 模块sofoocallbackfileendsharedother