I checked for Null also. But No change in the result. Still getting the system error. But when i m calling only c.c(5) function and not calling c.path("hi python c api") function, i m getting proper output without any system error. Any clue? Subject: Re: Getting System error with PyModule_AddIntConstant funtion From: Philip Semanchuk <phi...@semanchuk.com> Date: Tue, 18 May 2010 11:50:46 -0400 To: "python-list (General)" <python-list@python.org> ------------------------- Contents ------------------------- On May 18, 2010, at 11:41 AM, MathanK wrote: > Following is a Python 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 " Hi Mathan, You're not checking the return code from PyModule_Create(). Is it returning NULL? Also, there's a list specific to Python's C API. You might get a better response to your question there: http://mail.python.org/mailman/listinfo/capi-sig bye Philip > > > 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", &amp;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", &amp;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(&amp;c_Module); > 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; > }
-- http://mail.python.org/mailman/listinfo/python-list