Я пытаюсь использовать цифровую библиотеку c в python, которая полагается на fftw3, используя Ctypes. Скажем, у меня есть программа, которая выглядит следующим образом:Python Ctypes и FFTW Linking
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
Когда я пытаюсь загрузить его в Python с использованием ctypes, это, кажется, не связаны должным образом:
import ctypes
lib = ctypes.cdll.LoadLibrary('libfoo.so')
Python печатает:
OSError: libfoo.so:
undefined symbol: fftw_alloc_complex
я был первоначально используя новую установку FFTW 3.1 создана с ./configure сделать сделать установки , но я впоследствии попытался перекомпиляции FFTW с множеством различных опций, таких как «-fPIC», как указано here. Это дает идентичное сообщение об ошибке, и теперь у меня нет идей. Эта же процедура работала для импорта других библиотек в python, которые раньше использовали внешние библиотеки, такие как GSL, поэтому я не знаю, что происходит с FFTW3. Любая помощь будет принята с благодарностью.
~ Дуг