"gianluca" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
On 30 Giu, 18:26, Jean-Paul Calderone <[EMAIL PROTECTED]> wrote:
On Mon, 30 Jun 2008 09:13:42 -0700 (PDT), gianluca <[EMAIL PROTECTED]>
wrote:
>I've a problem with dll function colled with python/ctypes. My
>functions (C) requred a typedef int "value_type" in tree different
>way:
>same as value_type; - mydll.foo1(value_type)
>same as *value_type; - mydll.foo2(*value_type)
>same as **value_type; - mydll.foo3(**value_type)
>How can pass it in python. If i do that:
>rules=POINTER(value_type)
>opr=rsl.StrengthOfRules(rules,10)
>R=POINTER(rules)
POINTER takes a class and returns a new class which represents a pointer
to input class.
pointer takes an instance and returns a new object which represents a
pointer to that instance.
Jean-Paul
so,
if I write this:
p=pointer(value_type)
mydll.foo1(p)
could be correct but python say me:
TypeError: _type_ must have storage info
what does mean?
thank you
gima
It means you cannot create a pointer to a type, you need to provide an
instance of a type:
from ctypes import *
px=pointer(c_int)
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "C:\dev\python\lib\ctypes\__init__.py", line 282, in pointer
return POINTER(type(inst))(inst)
File "C:\dev\python\lib\ctypes\__init__.py", line 226, in POINTER
{'_type_': cls})
TypeError: _type_ must have storage info
x=c_int(5) # make an instance (C equiv. is "int x=5;")
px=pointer(x) # int* px = &x;
ppx=pointer(px) # int** ppx = &px;
x
c_long(5)
px
<ctypes.LP_c_long object at 0x00E87350>
ppx
<ctypes.LP_LP_c_long object at 0x00E873A0>
--Mark
--
http://mail.python.org/mailman/listinfo/python-list