Cython - правильно объявляет веселье C - PullRequest
2 голосов
/ 12 января 2011

У меня проблемы с запуском чистого примера.

Я использую это для объявления функции в Cython, исходящей из заголовка cinterf.h:

cdef extern from 'cinterf.h':  
int xsb_init_string(char* p_xsb_path)

Объявление вфайл заголовка C:

DllExport extern int call_conv xsb_init_string(char *);

и DllExport, и call_conv являются макросами, определенными в другом месте, и разрешаются в директивах компилятора GCC.
Должен ли я использовать их внутри cdef, чтобы полностью соответствовать объявлению?

Когда я вызываю xsb_init_string() как:

xsb_init_string('some string')

Интерпретатор python дает мне:

'ImportError: ./py_ext.so: undefined symbol: xsb_init_string'

Правильно ли я объявляю подпись xsb_init_string() внутри cdef

1 Ответ

2 голосов
/ 12 января 2011

Вам нужно связать с DLL библиотеку, которая содержит реализацию xsb_init_string.

Если вы используете distutils для компиляции модуля Cython, вы можете передать опции компоновщику для включения библиотек.

...