python - f2py。 Fortran 子例程参数多行。 "unknown_subroutine"

标签 python interface fortran subroutine f2py

我正在使用 f2py 开发 python/fortran 接口(interface)。 我的 Fortran 代码有一些子例程,其参数列表长于一行,因此我使用标准的 Fortran 规则来换行,即:

  SUBROUTINE mutation(it,pop,pm,pmg,typem,xmin,xmax,newfx,nbvar,
  $popsize,tip,nouvpop,nbnew)

当我尝试使用 f2py 构建 python 模块时,使用命令:

f2py3 -c forFunct.f -m mga

我明白了:

...
Block: unknown_subroutine
...
Constructing wrapper function "unknown_subroutine"...
      unknown_subroutine()

最终

error: Command "gcc -pthread -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-
prototypes -fPIC -I/tmp/tmp1tw75l/src.linux-x86_64-3.3 
-I/Produits/publics/x86_64.Linux.RH6/python/3.3.3/lib/python3.3/site-
packages/numpy/core/include -
I/Produits/publics/x86_64.Linux.RH6/python/3.3.3/include/python3.3m -c 
/tmp/tmp1tw75l/src.linux-x86_64-3.3/mgamodule.c -o 
/tmp/tmp1tw75l/tmp/tmp1tw75l/src.linux-x86_64-3.3/mgamodule.o" 
failed with exit status 1

你知道这个问题有什么解决办法吗?我确定它来自多行参数,f2py 支持吗?

谢谢

弗朗西斯科

最佳答案

你到底如何打破界限?从你的代码片段来看并不清楚,但看起来它是错误的。如果我以真实标准方式执行此操作,并将任何字符放置在第六列中,那么它就可以工作。

1234567
      SUBROUTINE mutation(it,pop,pm,pmg,typem,xmin,xmax,newfx,nbvar,
     $    popsize,tip,nouvpop,nbnew)
      END

关于python - f2py。 Fortran 子例程参数多行。 "unknown_subroutine",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867183/

相关文章:

Python/Pandas - 如果另一个行值 < 列名则创建行值

python - 从python中的路径中获取选定的文本

python - 将多个元素添加到字典中的集合

recursion - 如何防止递归 Fortran 子例程中定义的变量在内部调用时更新?

arrays - 分配相同大小的数组

FORTRAN IV/66 程序在 DO 循环中停顿

python - 如何在 Python/Windows10 上使用 FFMPEG 和 Pipe 进行屏幕录制?

c# - 减少 NUnit 测试中接口(interface)不同实现的重复

java - 如何为一个 Java 类创建两个接口(interface),一个是只读的,一个是可读写的?

c# - viewModel之间使用MVVM方式的接口(interface)进行通信