Re: [ctypes-users] Calling function pointers returned in structures
Brought to you by:
theller
From: Thomas H. <th...@py...> - 2003-02-25 08:19:18
|
li...@68... writes: > On Mon, 24 Feb 2003, Thomas Heller wrote: > > > Currently you have to use 'i' to get the function pointers (addresses). > > The you can 'from _ctypes import call_function' and call > > call_function(address, argtuple). > > > > Thanks. Is there a secret to passing arguments to a function this way? > It seems to be working when there are no arguments, but when there are > arguments it seems to run the function but then this exception occurs > before a result can be returned: > > ValueError: Procedure probably called with too many arguments (4 bytes in > excess) The problem is that call_function always uses the STDCALL calling convention, and there's no way to teach it to use CDECL instead. As a temporary workaround, I've also implemented a 'call_cdeclfunction' in _ctypes.pyd which should work for you (it's in a CVS snapshot binary version I just uploaded to SF, in the files section: ctypes-0.4.1.win32-py2.2.exe. HTH, Thomas |