首页 > 解决方案 > 为什么 PyArg_ParseTuple 总是返回 false?

问题描述

我的PyFLoat_ParseTuple调用总是返回 false,来自 python 端的调用正确。

我正在为 Python 包装我的 C++ 并使用 python 扩展。我有一个成功的项目,并以此为基础生成了当前的项目。
我的 python 运行总是崩溃,在调查过程中,我将代码缩减为以下最小代码以重复它。

如果我将 C++/Python 端都更改为非 arg 调用,它会按预期工作。但是当我传入 args 时,总是会打印“解析错误”。

C++:

static PyObject *myfunc(PyObject *self, PyObject *args)
{
    float v[6];
    if (!PyArg_ParseTuple(args, "ffffff", v,v+1,v+2,v+3,v+4,v+5));
    { 
                //I can alway see this prited.
        cerr<<"Parse error\n";
        return NULL;
    }
        return PyString_FromFormat("No error!\n");
}

Python:

print func(0.1,0.2,0.3,0.4,0.5,0.6)

标签: pythonc++python-extensions

解决方案


一个非常简单的错字:

if (!PyArg_ParseTuple(args, "ffffff", v,v+1,v+2,v+3,v+4,v+5));

- 看到;末尾的分号了if吗?


推荐阅读