我可以在带有子例程调用的子例程上使用F2PY吗?

瑞安·加兰(Ryan Garland)

使用F2PY作为包装器,是否可以将子例程与子例程调用一起使用?如果是这样,怎么办?

如果我不清楚,我的意思是这样的:

    SUBROUTINE average(a, b, out)

    real a, b, out
cf2py intent(in) a, b
cf2py intent(out) out

    call add(a, b, out)

    out=out/2

    END

add子例程如下:

  subroutine add(a, b, out)

  real a, b, out

  out = a + b

  return
  end

尝试f2py -c -m average average.f并导入到python我得到:

ImportError:./average.so:未定义的符号:add_

此外,将意图添加到第二个子例程中也不能解决问题。

卡西

您需要add在编译命令中包含包含的文件,例如

f2py -c -m average average.f add.f

您导入的共享库需要在导入时解析其引用,这意味着它们必须包含在库中或链接到该库。您可以像下面这样将功能保存在单独的库中:

gfortran -shared -fPIC -o add.so add.f
f2py -c -m average average.f add.so

它将产生一个本身不包含add但会add.so对该函数具有运行时链接依赖关系的python模块

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我不能通过f2py调用Fortran子例程而没有正确数量的输入?

如何使用f2py将字符串数组传递给Fortran子例程

(1)中的外部函数'f'在具有f2py的子例程中没有IMPLICIT类型

为什么不能通过f2py输入正确数量的输入参数来调用Fortran子例程?

f2py:将数组预先分配为Fortran子例程的输入

子例程运行时,我可以单击MS Access窗体上的按钮吗?

带有可选块参数的子例程

使用参数调用Excel VBA子例程

批处理-带有感叹号(!)和延迟扩展的设置/重置参数调用子例程吗?

子例程可以包含在 Fortran 中的子例程(而不是程序中)中吗?

从Python调用Access子例程

如何获取带有子例程的开始和结束行号的perl子例程列表?

子例程中调用的子例程中的Application.ScreenUpdating

调用带有对象作为参数的子例程时的运行时错误Excel VBA

调用带有可选参数的子例程时,缺少实际参数

我可以在Cake脚本中定义可重用的子例程/函数/方法吗?

从numpy.f2py从fortran子例程返回时发生错误

Perl:为什么我可以递归地调用子例程A,但是我不能从B调用A,而B是从较早的A调用的呢?

带有子模块的Fortran子例程重载

带有散列和可选标量参数的子例程

将带有参数的子例程推入Perl中的堆栈

子例程签名可以与overload.pm一起使用吗?

为什么我可以在没有错误声明的情况下获取子例程地址?

子例程在其调用例程的堆栈中写入是否安全?

使用完全限定名称调用模块子例程

使用Julia的数组参数调用Fortran子例程

使用函数或子例程调用的Fortran行继续

从C ++使用可选参数调用Fortran子例程

R使用字符参数调用Fortran子例程