尝试在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
?