在c+中扩展嵌入式python+;-PyMethodDef问题 试图在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); }

在c+中扩展嵌入式python+;-PyMethodDef问题 试图在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); },python,c++,Python,C++,在调用Py\u 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

在调用
Py\u 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\u hexdigest?

你说的“不工作”是什么意思?有错误吗?它是否返回了一个您不期望的值?当我尝试调试它时,进程停止,visual studio中会出现警报窗口,并显示“qt.exe中0x00D8FCFF处未处理的异常:0xC0000005:访问冲突读取位置0x00000004。”消息。如果我对python文件中的“sha_256.hexdigest()”调用进行注释,则该调用可以正常工作。您所说的“不工作”是什么意思?有错误吗?它是否返回了一个您不期望的值?当我尝试调试它时,进程停止,visual studio中会出现警报窗口,并显示“qt.exe中0x00D8FCFF处未处理的异常:0xC0000005:访问冲突读取位置0x00000004。”消息。如果我在python文件中对“sha_256.hexdigest()”调用进行注释,则可以正常工作。