Getting System error with PyModule_AddIntConstant funtion
Following is a Python3.1 C api which runs properly without PyModule_AddIntConstant function.
But when PyModule_AddIntConstant() function is used, getting the following error when i call c. path("test call"); " SystemError: NULL result without error in PyObject_Call "
Python C api- c.c
int test(int a){ return (2*a+a); }
PyObject* dict = NULL;
static PyObject* path(PyObject* self, PyObject* args) { char *cpath; PyUnicodeObject *path; PyUnicodeObject *test;
if (!PyArg_ParseTuple(args, "s", &path))
return NULL;
cpath = (char *)path;
test = (PyUnicodeObject*)(cpath);
PyObject *testDict = PyDict_New();
int testVal = PyDict_SetItem(testDict, (PyObject *)PyUnicode_FromString(cpath), (PyObject *)PyUnicode_FromString(cpath));
return Py_BuildValue("s", test);
} static PyObject* c(PyObject* self, PyObject* args) { int a; int result; if(!PyArg_ParseTuple(args, "i", &a)) return NULL; result = test(a); return Py_BuildValue("i", result);
}
static PyMethodDef cmethods[] = { {"c", c, METH_VARARGS, "watch"}, {"path", path, METH_VARARGS, "test"}, {NULL, NULL, 0, NULL}, };
static struct PyModuleDef c_Module = { PyModuleDef_HEAD_INIT, "c", ( "Interface." ), -1, cmethods };
PyMODINIT_FUNC PyInit_c(void) {
PyObject* obj = PyModule_Create(&c_Module);
if (obj == NULL)
return NULL;
long lon1 = 0;
PyModule_AddIntConstant(obj, "test", lon1);
}
int main(int argc, wchar_t *argv[]) { PyImport_AppendInittab("c", PyInit_c); Py_SetProgramName(argv[0]); Py_Initialize(); PyImport_ImportModule("c"); return 0; }
participants (1)
-
MathanK