Problem with writing an interface for system() call...
fredrik at pythonware.com
Mon Jan 9 11:25:09 EST 2006
"haynes george" wrote:
> I was reading the tutorial "Extending and Embedding
> the python interpreter" available with python ..
> As per given in the tutorial i created an interface to
> the system() system call.
> this is the code of my module
your code doesn't compile:
spam.c(5) : error C2082: redefinition of formal parameter 'self'
spam.c(6) : error C2082: redefinition of formal parameter 'args'
spam.c(10) : warning C4047: 'function' : 'struct _object *' differs in levels of in
direction from 'int '
spam.c(10) : warning C4024: 'PyArg_ParseTuple' : different types for formal and
actual parameter 1
spam.c(18) : warning C4113: 'struct _object *(__cdecl *)()' differs in parameter
lists from 'struct _object *(__cdecl *)(struct _object *,struct _object *)'
if I fix the argument stuff so that the code matches the example in
the extending/embedding manual, the spam.system() call works just
fine over here.
> int main(int argc,char **argv)
what made you think it was a good idea to put a main() function in
an extension ? the interpreter (or embedding application) already has
one, so you don't need to add another one...
> // Py_SetProgName(argv);
> /* I COMMENTED THE ABOVE CALL AS IT GAVE ME SOME WIERD
> ERROR */
weird as in
unresolved external symbol _Py_SetProgName
? (it's Py_SetProgramName, not Py_SetProgName).
> I was even able to import the module into the python
> interpreter but caling the function gave me the
> following error
> >>>import spam
> >>>spam.system("ls -l")
> python: Python/getargs.c:90: vgetargs1: Assertion
> `compat || (args != (PyObject*)((void *)0))' failed.
> [haynes at fosters:~/python]
> any idea?
did you look for warnings from your compiler ?
More information about the Python-list