如何在python3中制作ctype字符串数组?

时间:2014-12-10 06:36:51

标签: arrays string python-3.x ctypes

我正在尝试将字符串(sys.argv)列表传递给c库。 在python2.x中,它的工作方式如下:

lib = cdll.LoadLibrary("./libfoo.so")

arr = (c_char_p * (len(sys.argv) + 1))(*sys.argv)
arr[ len(sys.argv) ] = None

lib.foo_main(byref(arr))

但在python3中,它不起作用,它说:

TypeError: bytes or integer address expected instead of str instance

所以,我这样解决了:

arr = (c_char_p * (len(sys.argv) + 1))()
idx = 0
for arg in sys.argv:
    arr[idx] = bytes(str(arg), 'ascii')
    idx += 1
arr[ len(sys.argv) ] = None

但我认为这是一个肮脏的解决方法。我想知道更优雅的方法。 有人能帮帮我吗?

0 个答案:

没有答案