Rya*_*and 4 python fortran nested subroutine f2py
使用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
Run Code Online (Sandbox Code Playgroud)
add子例程如下:
subroutine add(a, b, out)
real a, b, out
out = a + b
return
end
Run Code Online (Sandbox Code Playgroud)
尝试f2py -c -m average average.f并导入到python我得到:
ImportError:./average.so:未定义的符号:add_
另外,将意图添加到第二个子例程中也无法解决该问题。
您需要add在编译命令中包含包含的文件,例如
f2py -c -m average average.f add.f
Run Code Online (Sandbox Code Playgroud)
导入的共享库需要在导入时解析其引用,这意味着它们必须包含在库中或链接到该库。您可以像下面这样将功能保存在单独的库中:
gfortran -shared -fPIC -o add.so add.f
f2py -c -m average average.f add.so
Run Code Online (Sandbox Code Playgroud)
它将产生一个本身不包含add但将add.so对该函数具有运行时链接依赖关系的python模块。
| 归档时间: |
|
| 查看次数: |
1172 次 |
| 最近记录: |