Getting System error with PyModule_AddIntConstant funtion
MathanK
switch2mathan at gmail.com
Tue May 18 13:31:06 EDT 2010
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 <philip at semanchuk.com>
Date: Tue, 18 May 2010 11:50:46 -0400
To: "python-list (General)" <python-list at 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", &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;
> }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20100518/486f82c2/attachment-0001.html>
More information about the Python-list
mailing list