f2py. Fortran 子程序多个行参数. "unknown_subroutine

1 投票
1 回答
720 浏览
提问于 2025-04-18 14:06

我正在使用f2py来创建一个Python和Fortran的接口。

我的Fortran代码中有一些子程序,它们的参数列表超过了一行,所以我按照Fortran的标准规则来换行,也就是:

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

当我尝试使用以下命令来构建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支持这种写法吗?

谢谢

Francesco

1 个回答

3

你是怎么换行的?从你的代码片段来看,这一点不是很清楚,但看起来好像不太对。如果我按照标准的方法,把任何字符放在第六列,那就能正常工作。

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

撰写回答