Hi,
I have a setup roughly like this:
import ctypes
import sys
Lib = ctypes.cdll.LoadLibrary("libthing")
c_char_pp = ctypes.POINTER(ctypes.c_char_p)
LibOpen = Lib.Open
LibOpen.argtypes = (ctypes.c_int, # argc
c_char_pp) # argv
LibOpen.restype = ctypes.c_int
argc = ctypes.c_int(len(sys.argv))
Args = ctypes.c_char_p * len(sys.argv)
args = Args(*[ctypes.c_char_p(arg.encode("utf-8"))
for arg in sys.argv])
argv = ctypes.pointer(args)
LibOpen(argc, ctypes.byref(argv))
But when run it produces an error:
ctypes.ArgumentError: argument 2: <class 'TypeError'>: expected LP_c_char_p
instance instead of pointer to LP_c_char_p_Array_1
or this if I use LibOpen(argc, argv):
ctypes.ArgumentError: argument 2: <class 'TypeError'>: expected LP_c_char_p
instance instead of LP_c_char_p_Array_1
I understand what it is telling me; but I don't know or understand ctypes well
enough to fix it. I guess I need to convert the array pointer to a char **
pointer? Can anyone tell me, or point me to info that would help?
Thanks!
--
https://mail.python.org/mailman/listinfo/python-list