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 " 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); 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