2012-04-30 92 views
1

我試圖在python中使用C數值庫,它依賴fftw3使用Ctypes。比方說,我有一個程序,看起來像這樣:Python Ctypes和FFTW鏈接

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的將其加載到蟒蛇,它似乎並不有聯繫正確:

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

Python的打印:

OSError: libfoo.so: 
    undefined symbol: fftw_alloc_complex 

我最初使用新安裝的FFTW 3.1設置與 的./configure 使 make install的 但我後來試圖用各種不同的選項,如「-fPIC」作爲概括here FFTW重新編譯。這給出了一個相同的錯誤信息,我現在已經沒有想法了。這同樣的過程已經用於將其他庫導入python,之前使用外部庫如GSL,所以我不知道FFTW3出了什麼問題。任何幫助將不勝感激。

〜道格

回答

0

在同事我搜索和手動刪除所有相關FFTW的DLL的意見,然後提出和再次安裝使用正確的標誌-fpic。看起來fftw卸載腳本並沒有完全刪除舊版本的fftw。