Re: [問題] 呼叫C 函式的問題

作者: vgy   2017-07-07 21:58:18
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去寫資料嗎
作者: uranusjr (←這人是超級笨蛋)   2017-07-08 18:11:00
Python 的資料每 16 位元一組剛好等於 C 那邊的 8 位元所以看起來是你兩邊的格式沒有 match, 可能是 C 輸出的其實是 wchar * 之類的
作者: os653   2017-07-08 18:25:00
你C跟Python一定有一邊輸出寫錯吧直接叫function回傳0123456789abcdefg看結果比較快

Links booklink

Contact Us: admin [ a t ] ucptt.com