f2py。多行的fortran子程序参数。 " unknown_subroutine"

时间:2014-07-21 14:08:12

标签: python interface fortran subroutine f2py

我正在使用f2py开发python / fortran接口。 我的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的支持?

谢谢

弗朗西斯

1 个答案:

答案 0 :(得分:2)

你究竟如何打破界限?你的片段不清楚,但它看起来是错的。如果我以真实的标准方式进行,通过在第6列中定位任何字符,它可以正常工作。

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