Python Ctypes和FFTW链接

时间:2012-04-30 18:25:27

标签: ctypes dynamic-linking fftw

我正在尝试在python中使用c数值库,它依赖于使用Ctypes的fftw3。假设我有一个看起来像这样的程序:

    foo.cc:
    #include <fftw3.h>

    extern "C"{

    void foo(){
    fftw_complex *result;
    result = fftw_alloc_complex(1024*1024*1024);
    }

然后我使用:

编译它
   icpc -O3 -fpic -c foo.cc -o foo.o
   icpc -shared -o libfoo.so  foo.o -lfftw3

当我尝试使用ctypes将其加载到python中时,它似乎没有正确链接:

   import ctypes 
   lib = ctypes.cdll.LoadLibrary('libfoo.so')

Python打印:

   OSError: libfoo.so:
   undefined symbol: fftw_alloc_complex

我最初使用全新安装的fftw 3.1设置        。/配置         使         make install 但我后来尝试使用各种不同的选项重新编译fftw,如'-fPIC',如here所示。这给出了相同的错误信息,我现在已经没有想法了。这个程序同样适用于将其他库导入到之前使用外部库(如GSL)的python中,因此我不知道FFTW3出了什么问题。任何帮助将不胜感激。

〜道格

1 个答案:

答案 0 :(得分:0)

根据同事的建议,我搜索并手动删除所有与fftw相关的dll,然后使用正确的标志-fpic再次制作和安装。似乎fftw卸载脚本没有完全删除以前版本的fftw。