gpt4 book ai didi

Python 将 char * 作为参数传递给函数

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:19 24 4
gpt4 key购买 nike

我使用 Cython 插件从 C++ 静态库创建了一个 python 模块。 C++ 库提供了一个列出文件夹内容的函数。它提供要显示其内容的目录的名称,以及将存储目录内容的输出缓冲区,当然还有输出缓冲区的长度。该函数的C++定义如下:

int ListItems(char *dir, char *buf, int buflen)

然后 python 模块依次有一个函数 PyListItems,它只是调用这个函数:

def PyListItems(char *dir, char *buf, int buflen):
return ListItems(dir,buf,buflen)`

在我使用这个函数的脚本中,我定义了一个字符串缓冲区和一个指向它的 c_char_p 类型的指针,并将它传递给函数代替buf 参数:

buf = c_types.create_string_buffer(100)
pBuf = c_char_p(addressof(buf))
PyListItems('someFolder',pBuf,100)

但是我收到以下错误:

TypeError: expected string or Unicode object, c_char_p found

如有任何帮助,我们将不胜感激。

最佳答案

pBuf = c_char_p(addressof(buf))

你不需要这个。 create_string_buffer 已经返回一个字符数组。只是做:

buf = c_types.create_string_buffer(100)
PyListItems('someFolder',buf,100)

关于Python 将 char * 作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34658710/

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