gpt4 book ai didi

Cython - 正确声明 C 函数

转载 作者:太空宇宙 更新时间:2023-11-03 23:35:31 25 4
gpt4 key购买 nike

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

我正在使用它在 Cython 中声明一个来自 cinterf.h header 的函数:

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() 签名?

最佳答案

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

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

关于Cython - 正确声明 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4664600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com