从商业图书馆中排除对子程序的调用

时间:2013-02-11 13:57:35

标签: python fortran f2py

我有一个包含很多有用子程序的fortran文件,我想使用f2py为它创建一个Python接口。

问题出现是因为一些fortran子程序从NAG库(名为c06ebf)调用FFT子程序。导入到Python时,它会生成'undefined symbol:co6eb​​f'警告。

还有其他方法可以在我的Fortran子程序中执行FFT并能够使用f2py从它创建Python接口吗?

1 个答案:

答案 0 :(得分:0)

此问题以下列方式解决:

  1. 所有调用商业FFT库的实例都被调用自由FFT库(在本例中为FFTW3)所取代。当然,'include'fftw3.f“'必要时放在fortran子程序的顶部。

  2. 使用f2py创建扩展模块。第一行创建签名文件,第二行编译扩展模块。请注意,我们在此过程中链接了外部库 - 以前没有这样做,这导致了陈述的问题。

      

    f2py -m splib -h splib.fpy splib.f
      f2py -c splib splib.f -lfftw3