Почему PyArg_ParseTuple всегда возвращает false? - PullRequest
1 голос
/ 02 мая 2019

Мой PyFLoat_ParseTuple вызов всегда возвращает false, с правильным вызовом со стороны Python.

Я работаю над переносом моего C ++ для Python и использую расширение Python. У меня был успешный проект, и на его основе я генерировал текущий.
У меня всегда был сбой при запуске Python, и в ходе расследования я сократил свой код до следующего минимального кода, чтобы повторить его.

Если я изменю обе стороны C ++ / Python на вызов non-arg, он будет работать как положено. Но «Ошибка разбора» всегда выводится, когда я передаю аргументы.

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 Ответ

1 голос
/ 02 мая 2019

очень простая опечатка:

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

- см. Точку с запятой ; в конце if?

...