gpt4 book ai didi

Python C 扩展通过引用传递参数

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:54 24 4
gpt4 key购买 nike

我正在尝试为原型(prototype)为的函数 (libFunc) 编写一个 python C 包装器

libFunc(char**, int*, char*, int)

如何使用 PyArg_ParseTuple 设置函数调用的参数。这是我目前拥有的

#include <Python.h>

PyObject* libFunc_py(PyObject* self, PyObject* args)
{
char* input;
char** output;
int inputlen;
int* outputlen;

PyArg_ParseTuple(args, "sisi" , output, outputlen, &input, &inputlen);


int ret = libFunc(output, outlen, input, inputlen);


return Py_BuildValue("i", ret);
}

我可以使用 byref 对 ctypes 执行相同的操作。

最佳答案

我最后是这样做的

#include <Python.h>

PyObject* libFunc_py(PyObject* self, PyObject* args)
{
char* input;
char* output;
int inputlen;
int outputlen;

PyArg_ParseTuple(args, "s#" , &input, &inputlen);


int ret = libFunc(&output, &outlen, input, inputlen);

if (ret !=0)
{
Py_ErrSetString(PyExc_RunTimeError, "ErrorMessage");
return NULL;
}

PyObject* retStr = Py_BuildValue("s#", output,outputlen);

if(output)
free(output)

return retStr;
}

关于Python C 扩展通过引用传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7411151/

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