Working with ctypes and char** data type

Thomas Heller theller at python.net
Thu Jul 24 11:03:59 EDT 2008


Philluminati schrieb:
> I'm a bit of a python newbie and I need to wrap a C library.
> 
> I can initialise the library using CDLL('mcclient.so')
> 
> and I can call functions correctly inside the library but I need to
> invoke one function which has this function definition:
> 
> char ** CAPAPI McSearch(HMCLINK Handle,
>                         short nSearchType,
>                         short nNoSelect,
>                         char **pSelect,
>                         short nNoWhere,
>                         char **pWhere,
>                         char **pData,
>                         int iTimeout);
> 
> For **pSelect I want to pass in an array of char points, which in C
> would be declared as
> 
> char *pData[] = { "ADDR", "POSTCODE" };
> 
> Can someone tell me how use pointers + char pointers together in
> python with ctypes please?

# create an array that holds two pointers to 'char *', and fill it with data:
pData = (c_char_p * 2)()
pData[0] = "ADDR"
pData[1] = "POSTCODE"

# Another way:
pData = (c_char_p * 2)("ADDR", "POSTCODE")

Thomas



More information about the Python-list mailing list