2

我无法运行一个简单的示例。

我正在使用它在 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 中正确声明了签名?

4

1 回答 1

2

您需要将包含xsb_init_string.

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

于 2011-01-12T01:46:22.637 回答