我正在尝试在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出了什么问题。任何帮助将不胜感激。
〜道格
答案 0 :(得分:0)
根据同事的建议,我搜索并手动删除所有与fftw相关的dll,然后使用正确的标志-fpic
再次制作和安装。似乎fftw卸载脚本没有完全删除以前版本的fftw。