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", &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

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to