Ctypes:将字符串作为参数从Python传递给C

时间:2017-02-06 16:47:31

标签: python c++ pointers ctypes

任何熟悉Ctypes的人都可以帮助我吗?

我试图从python调用一个C函数(实际上是一个类方法)。我的问题是传递一个字符串作为参数。为了简短起见,我不会复制C代码,因为那里的一切都很好。但这是我的python类:

from ctypes import cdll, c_char_p
clib = cdll.LoadLibrary('./libfoo.so')

class Session(object):
    def __init__(self):
        self.obj = clib.tunnel_init()

    def start(self, user_input):
        clib.tunnel_start.restype = c_char_p
        clib.tunnel_start.argtypes = [c_char_p]
        a = c_char_p(user_input)
        result = clib.tunnel_start(self.obj, a)
        return str(result)

当我跑步时:

if __name__ == "__main__":
    hello = Session()
    msg = hello.start("test")
    print(msg)

我收到此错误:

TypeError: bytes or integer address expected instead of str instance

似乎我的参数被视为字符串,而不是指针。我该如何解决?

非常感谢任何帮助!

0 个答案:

没有答案