作者vgy ()
看板Python
标题Re: [问题] 呼叫C 函式的问题
时间Fri Jul 7 21:58:18 2017
in c function f(char *p) 一块memory 的复制
原本用SWIG 转出来的module来使用 ,可是用create_string_buffer传给
function f 会遇到 argument type 不对
後来把C编译成 share library 然後用CDLL loadlibrary来使用
lib = CDLL("libtest.so")
dump= lib.f;
dump.argtypes =[c_char_p]
data =create_string_buffer(100)
dump(data)
print repr(data.raw)
这样运作 是没遇到问题 不过资料看起来怪怪的
在C里面资料是 100030029008....
在python印出来是
\x00\x01\x00\x00\x03\x00\x00\x02\x00\t\x00\x08
有些资料会怪怪的, 有人知道该如何让
python create 一块memory 然後给C去写资料吗
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.51.33
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1499435901.A.C84.html
1F:→ uranusjr: Python 的资料每 16 位元一组刚好等於 C 那边的 8 位元 07/08 18:11
2F:→ uranusjr: 所以看起来是你两边的格式没有 match, 可能是 C 输出的 07/08 18:11
3F:→ uranusjr: 其实是 wchar * 之类的 07/08 18:11
4F:→ os653: 你C跟Python一定有一边输出写错吧 07/08 18:25
5F:→ os653: 直接叫function回传0123456789abcdefg看结果比较快 07/08 18:26