gianluca <[EMAIL PROTECTED]> wrote: > On 23 Mag, 07:48, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: > > On Thu, 22 May 2008 21:55:41 -0700, gianluca wrote: > > > Yes, I know it but when I load a function (a=myDLL.myFUNCT()) I've an > > > exception like this: > > > > > Traceback (most recent call last): > > > File "<pyshell#18>", line 1, in <module> > > > myDLL.myFUNCT() > > > File "C:\Python25\lib\ctypes\__init__.py", line 353, in __getattr__ > > > func = self.__getitem__(name) > > > File "C:\Python25\lib\ctypes\__init__.py", line 358, in __getitem__ > > > func = self._FuncPtr((name_or_ordinal, self)) > > > AttributeError: function 'myFUNCT' not found > > > > Then maybe the DLL doesn't contain a function called `myFUNCT`. Any > > chance you compiled your C as C++ and name mangling kicked in? > > > > Can you show a minimal C source for a DLL, how you compiled it, what you > > did on the Python side to call it, and how it fails? > > > > Ciao, > > Marc 'BlackJack' Rintsch > > I've located my dll in c:\windows\system32 (in linux I aven't any > problem) and I compiled it with dev-c++. The source code is C standard > ANSII and is quite havy. If you like I can send it via mail (you can > realy at [EMAIL PROTECTED]) . I've tryed to build a wrape with swig > olso with same code and I can access at all the function.
You can use objdump from mingw or cygwin to look inside the dll and see exactly what it is exporting, eg objdump -x OurSharedCodeLibrary.dll This prints a great deal of stuff! In the middle you'll see [snip] The Export Tables (interpreted .rdata section contents) [snip] Ordinal/Name Pointer] Table [ 0] OSCL_DEBUG_fakeInitComplete [ 1] OSCL_close [ 2] OSCL_displayIdent [ 3] OSCL_getCurrentDynamicParams [ 4] OSCL_getCurrentStaticParams [ 5] OSCL_getErrorString [ 6] OSCL_getIdent [snip] This is a dll we used in a project, and those names exactly worked with ctypes, eg some snips from the ctypes code self.dll = cdll.LoadLibrary("OurSharedCodeLibrary") self.dll.OSCL_getErrorString.restype = c_char_p def getErrorString(self, status): return self.dll.OSCL_getErrorString(c_int(status)) -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list