<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div>Following is a Python C api which runs properly without PyModule_AddIntConstant function. </div><div><br></div><div>But when PyModule_AddIntConstant() function is used, getting the following error when i call </div><div>c. path("test call");</div><div>" <font class="Apple-style-span" color="#FF0000">SystemError: NULL result without error in PyObject_Call</font> "</div><div><br></div><div><b>Python C api- c.c</b></div><div><br></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2">int</span> test(<span style="color: #bb2ca2">int</span> a){</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>return</span> (<span style="color: #272ad8">2</span>*a+a);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">}</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">PyObject* dict = <span style="color: #bb2ca2">NULL</span>;</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2">static</span> PyObject* path(PyObject* self, PyObject* args) {</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>char</span> *cpath;</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyUnicodeObject *path;</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyUnicodeObject *test;<span class="Apple-tab-span" style="white-space:pre"> </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>if</span> (!PyArg_ParseTuple(args, <span style="color: #d12f1b">"s"</span>, &path))</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> <span style="color: #bb2ca2">return</span> <span style="color: #bb2ca2">NULL</span>;<span class="Apple-tab-span" style="white-space:pre"> </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> cpath = (<span style="color: #bb2ca2">char</span> *)path;<span class="Apple-tab-span" style="white-space:pre"> </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> test = (PyUnicodeObject*)(cpath);<span class="Apple-tab-span" style="white-space:pre"> </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyObject *testDict = PyDict_New();</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>int</span> testVal = PyDict_SetItem(testDict, (PyObject *)PyUnicode_FromString(cpath), (PyObject *)PyUnicode_FromString(cpath));</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><span class="Apple-tab-span" style="white-space:pre"> </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>return</span> Py_BuildValue(<span style="color: #d12f1b">"s"</span>, test);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">}</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2">static</span> PyObject* c(PyObject* self, PyObject* args) {</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"> </p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>int</span> a;</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> <span style="color: #bb2ca2">int</span> result;</p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>if</span>(!PyArg_ParseTuple(args, <span style="color: #d12f1b">"i"</span>, &a))</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #bb2ca2"><span style="color: #000000"> <span class="Apple-style-span" style="color: rgb(187, 44, 162); ">return<span style="color: #000000"> </span>NULL<span style="color: #000000">;</span></span></span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> result = test(a);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>return</span> Py_BuildValue(<span style="color: #d12f1b">"i"</span>, result);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><span class="Apple-tab-span" style="white-space:pre"> </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">}</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2">static</span> PyMethodDef cmethods[] = {</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> {<span style="color: #d12f1b">"c"</span>, c, METH_VARARGS, <span style="color: #d12f1b">"watch"</span>},</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> {<span style="color: #d12f1b">"path"</span>, path, METH_VARARGS, <span style="color: #d12f1b">"test"</span>},</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #bb2ca2"><span style="color: #000000"> {</span>NULL<span style="color: #000000">, </span>NULL<span style="color: #000000">, </span><span style="color: #272ad8">0</span><span style="color: #000000">, </span>NULL<span style="color: #000000">},</span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">};</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2">static</span> <span style="color: #bb2ca2">struct</span> PyModuleDef c_Module = {</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyModuleDef_HEAD_INIT,</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> <span style="color: #d12f1b">"c"</span>,</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> (</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b"><span style="color: #000000"><span class="Apple-tab-span" style="white-space:pre"> </span> </span>"Interface."</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> ),</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> -<span style="color: #272ad8">1</span>,</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> cmethods</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">};</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">PyMODINIT_FUNC PyInit_c(<span style="color: #bb2ca2">void</span>) {</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><span class="Apple-tab-span" style="white-space:pre"> </span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyObject* obj = PyModule_Create(&c_Module);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>long</span> lon1 = <span style="color: #272ad8">0</span>;</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyModule_AddIntConstant(obj, <span style="color: #d12f1b">"test"</span>, lon1);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"> </p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">}</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; min-height: 13.0px"><br></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"><span style="color: #bb2ca2">int</span> main(<span style="color: #bb2ca2">int</span> argc, wchar_t *argv[])</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">{</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyImport_AppendInittab(<span style="color: #d12f1b">"c"</span>, PyInit_c);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> Py_SetProgramName(argv[<span style="color: #272ad8">0</span>]);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> Py_Initialize();</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo"> PyImport_ImportModule(<span style="color: #d12f1b">"c"</span>);</p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #bb2ca2"><span class="Apple-style-span" style="color: rgb(0, 0, 0); "> </span>return<span style="color: #000000"> </span><span style="color: #272ad8">0</span><span style="color: #000000">;</span></p> <p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo">}</p></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><br></p></div><div><div><br></div><div><br></div></div></body></html>