使用ctypes将字符串从python传递到c++只有第一个字符是sen

2024-10-03 19:29:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用PythyPython发送多字符字符串到C++。但是只传递每个字符串的第一个字符。在

这是Python中的调用:

ctypes.cdll.LoadLibrary(os.path.abspath("nodispersion.so"))
ctypes.CDLL(os.path.abspath('nodispersion.so')).nodispersion('teststring')
<>和我在C++中定义的:

^{pr2}$

结果只打印“t”。在

其他类型,如int pass fine。另外,如果我在c++中定义char*,它会打印得很好,所以我假设它是从Python传递过来的。任何建议都可以。在


Tags: path字符串so定义osctypes字符abspath
1条回答
网友
1楼 · 发布于 2024-10-03 19:29:36

感谢Dillon Davis:

Try ctypes.CDLL(os.path.abspath('nodispersion.so')).nodispersion(b'teststring'). Note the b

这解决了我在传递字符串'teststring'时的问题

但是我想传递一个在Python中定义为变量的字符串。这通过使用bytes函数并将编码定义为“utf8”来解决:

a = 'teststring'
ctypes.CDLL(os.path.abspath('nodispersion.so')).nodispersion(bytes(a, encoding='utf8'))

相关问题 更多 >