【问题标题】:Cython - properly declaring C funsCython - 正确声明 C funs
【发布时间】:2011-01-12 09:46:22
【问题描述】:

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

我正在使用它在 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'

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

【问题讨论】:

    标签: c cython


    【解决方案1】:

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

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

    【讨论】:

    • 我感觉可能是这样。我会试一试。谢谢
    猜你喜欢
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多