Cython - 正确宣布C语言

时间:2011-01-12 01:34:17

标签: c cython

我在运行一个简单的例子时遇到了麻烦。

我正在使用它在来自cinterf.h header:

的Cython中声明一个函数
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'

我是否正确地在cdef中声明了xsb_init_string()签名?

1 个答案:

答案 0 :(得分:2)

您需要将包含xsb_init_string实现的库链接到DLL。

如果您使用distutils编译Cython模块,则可以将选项传递给链接器以包含库。