在c ++中扩展嵌入式python - PyMethodDef问题

时间:2016-04-13 04:37:32

标签: python c++

尝试在C ++中扩展嵌入式python。在这种情况下,“PyMethodDef”函数中的一个方法定义工作正常。我的情况更多的方法定义只适用于第一个。这是一个例子:

static char *y = new char[100];
/* Return the number of arguments of the application command line */
static PyObject* hashlib_sha256(PyObject *self, PyObject *args)
{
    if (!PyArg_ParseTuple(args,"y", &y))
       return NULL;
    return Py_BuildValue("i", 1);
}
static PyObject* hashlib_hexdigest(PyObject *self, PyObject *args)
{
    if (!PyArg_ParseTuple(args, ""))
       return NULL;
    return Py_BuildValue("i", 0);
}
static PyMethodDef HahlibMethods[] = {
     {"sha256", hashlib_sha256, METH_VARARGS, ""},
     {"hexdigest", hashlib_hexdigest, METH_VARARGS, ""},
     {NULL, NULL, 0, NULL}
}
static PyModuleDef HashlibModule = {
    PyModuleDef_HEAD_INIT, "hashlib", NULL, -1, HahlibMethods,
    NULL, NULL, NULL, NULL
}
static PyObject* PyInit_hashlib(void)
{
    return PyModule_Create(&HashlibModule);
}

在主要内容中,我在Py_Initialize()调用

之前使用了以下方法
PyImport_AppendInittab("hashlib", &PyInit_hashlib);

Python代码:

import hashlib

def getILoomaAddress():
    sha_256 = hashlib.sha256(b'Hello World!')
    result = sha_256.hexdigest()
    return result

因此第一个sha256方法正常,但hexdigest没有。 这里有什么问题,为什么没有调用hashlib_hexdigest

0 个答案:

没有答案