为什么PyArg_ParseTuple总是返回false?

时间:2019-05-02 14:08:25

标签: python c++ python-extensions

我的PyFLoat_ParseTuple调用始终返回false,并且从python端进行了正确的调用。

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

如果我将C ++ / Python端都更改为non-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)

1 个答案:

答案 0 :(得分:1)

一个非常简单的错字:

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

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