任何熟悉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
似乎我的参数被视为字符串,而不是指针。我该如何解决?
非常感谢任何帮助!