Kiran wrote: > Hi all, I want to make python call some C functions, process them and > return them. > > Ok, I got all the wrapper functions and everything setup right. Here > is my problem. What I need to do is to return a tuple from C to > python. > > To go about doing this, I first create a tuple object in C doing the > following: > > PyObject* toRet; > toRet = PyTuple_New(num_addr); > > then, in a for loop, i assign values to the tuple as follows: > > for ( i = 0; i < num_addr; i++ ) > { > printf("%d\n", dat[i]); > PyTuple_SET_ITEM(toRet, i, (PyObject*)dat[i] ); > } > (dat is declared as follows: unsigned int* dat; ) > > then, i say return toRet at the end of my C function. > > when I try to print the tuple in python, it says the memory address > 0x.... could not be written, and I can see a part of the tuple > printout, which is as follows: > ( <nil>, > then i get my error. > > can someone please help me with this? > > thanks a lot! > -- Kiran
I have not done a great deal of extension work with python, however, I do not believe you can simply cast an int (or pointer to int, which is what you say dat is declared as, unless my C is /really/ rusty) to PyObject*. I think you need to do something like Py_BuildValue("i", 123), but see http://docs.python.org/ext/buildValue.html for more info. Peace, ~Simon -- http://mail.python.org/mailman/listinfo/python-list