1

我正在尝试在 python 中使用 ac 数值库,该库依赖于使用 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,使用 ./configure make make install 设置,但随后我尝试使用各种不同的选项(如此处概述的“-fPIC”)重新编译fftw。这给出了相同的错误消息,我现在没有想法了。同样的过程也适用于将其他库导入到以前使用 GSL 等外部库的 python 中,所以我不知道 FFTW3 出了什么问题。任何帮助将不胜感激。

〜道格

4

1 回答 1

0

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

于 2012-05-01T02:35:40.047 回答