Re: [ctypes-users] unknown functions issue (Thomas Heller)
Brought to you by:
theller
From: Stegmann P. <kp...@ho...> - 2008-10-30 12:35:26
|
Thomas, great, you were right, I patched xml2py.py to make use of WinDLL instead of CDLL and now it finds out the functions correctly ! Very nice, thank you for your help, Patricio > From: cty...@li... > Subject: ctypes-users Digest, Vol 30, Issue 26 > To: cty...@li... > Date: Thu, 30 Oct 2008 12:09:55 +0000 > > Send ctypes-users mailing list submissions to > cty...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/ctypes-users > or, via email, send a message with subject or body 'help' to > cty...@li... > > You can reach the person managing the list at > cty...@li... > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of ctypes-users digest..." > > > Today's Topics: > > 1. Re: unknown functions issue (Thomas Heller) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 29 Oct 2008 20:42:50 +0100 > From: Thomas Heller <th...@ct...> > Subject: Re: [ctypes-users] unknown functions issue > To: cty...@li... > Message-ID: <geaebs$9fq$1...@ge...> > Content-Type: text/plain; charset=ISO-8859-15 > > Stegmann Patricio schrieb: > > Hello again, sorry for the incovenience of a dual post ! > > I made a lot of research and the issue seems to come because of name mangling on the dll. > > So the question is, how can I get rid of this problem ? > > I extracted the list of functions with dependency walker and I get this: > > """ > [...] > > _LSCAN_Main_Initialize@12 > [...] > > """ > > In my header files, I have for example for this particular function: > > """ > > int WINAPI LSCAN_Main_Initialize( > > const int deviceIndex, ///< [in] Zero-based device index for device to init > > const BOOL reset, ///< [in] Perform a device reset prior to initialization. > > int *handle ///< [out] Function returns device handle to be used for subsequent function calls \n > > ///< Memory must be provided by caller > > ); > > """ > > the corresponding function from dependency is "_LSCAN_Main_Initialize@12". > > What would be the correct action to make h2xml and xml2py work ? > > I did in parallel a test by loading the dll, > > > > > >>>> from ctypes import * > >>>> _lse = cdll.LScanEssentials > >>>> print _lse.__getattr__('_LSCAN_Main_Initialize@12') > > <_FuncPtr object at 0x00B7E990> > > > > > > So with this naming it works, however all my header files do not use > > that naming, and I guess I cant name a function with an @ on a .h > > file ! > > Well, the 'windll' library loader that ctypes provides does this > name demangling automatically for you, so you should be able to run this also: > > >>>> from ctypes import * > >>>> _lse = windll.LScanEssentials > >>>> print _lse.__getattr__('LSCAN_Main_Initialize') > > <_FuncPtr object at 0x00B7E990> > > In the xml2py file is a bug which could probably by fixed with this patch, > the code generation should then work: > > Index: ctypeslib/xml2py.py > =================================================================== > --- ctypeslib/xml2py.py (revision 67040) > +++ ctypeslib/xml2py.py (working copy) > @@ -151,7 +151,9 @@ > > def load_library(name, mode=RTLD_LOCAL): > if os.name == "nt": > - return CDLL(name, mode=mode) > + from ctypes import WinDLL > + # WinDLL does demangle the __stdcall names, so use that. > + return WinDLL(name, mode=mode) > path = find_library(name) > if path is None: > # Maybe 'name' is not a library name in the linker style, > > > Thomas > > > > > ------------------------------ > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's challenge > Build the coolest Linux based applications with Moblin SDK & win great prizes > Grand prize is a trip for two to an Open Source event anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > > ------------------------------ > > _______________________________________________ > ctypes-users mailing list > cty...@li... > https://lists.sourceforge.net/lists/listinfo/ctypes-users > > > End of ctypes-users Digest, Vol 30, Issue 26 > ******************************************** _________________________________________________________________ Connect to the next generation of MSN Messenger http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=wlmailtagline |