Call a function in DLL with string arguments?
Gordon McMillan
gmcm at hypernet.com
Wed Nov 10 11:12:15 EST 1999
Juping Jin writes:
> I wrote a DLL and want its functions being available from python.
> Its function accept string arguments. From python, I use windll
> to load the module like:
>
> handle = windll.module("dllname")
> handle.fcnname(arguments)
>
> Python gives following msg:
>
> TypeError: illegal argument type for built-in operation
>
> So I did some tests, wrote a small dll and found out that if the
> function accept only numerical values (actually, only integer
> value produces expected results), then python won't give above
> errors. For char or char * argument, it always gave above msg.
> Did I do something wrong?
Well, if you're serious about exposing it to Python, you should
probably rewrite it, or wrap it, or SWIG it and make a proper
extension module. If you want to poke at it with windll, then
you need to realize that Python objects, even if they have a
natural translation to a C representation, are completely
incomprehensible to non-Python aware C. As I recall, there's a
cstring object in the same download as windll which gives you
a buffer you can use to communicate with a function in the dll.
In particular, you initialize the cstring with your Python string,
and it takes care of getting the function a real char *.
Sorry to be vague, but I no longer have windll etc. installed on
my system.
- Gordon
More information about the Python-list
mailing list