作者vgy ()
看板Python
標題[問題] 呼叫C 函式的問題
時間Sun Jul 2 20:52:20 2017
我用c寫了一個library
ex: func1(char* p, int size);
func1 裡面會對 p指到的buffer做修改
我用swig 轉出一個so檔 讓python可以 import使用
在python裡面 我用 create_string_buffer() 去建立一塊記憶體
然後想傳遞給func1
ex
p = create_string_buffer(100)
module.func1(p,100)
module.func1(byref(p),100)
都會產生 typeerror: argument 1 of type 'char *'
請問該如何修改才可以讓python 產生一塊記憶體傳遞給C去修改內容?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.169.239
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1498999943.A.356.html
→ os653: 你沒寫錯吧? 07/02 23:48
→ os653: 以前寫的 07/02 23:49
→ os653: # 把資料抓到 buffer 07/02 23:49
→ os653: buffer_ = create_string_buffer(buffer_size) 07/02 23:49
→ os653: GetDIBits(hdc, self.handle, 0, 07/02 23:49
→ os653: bmp.bmHeight, 07/02 23:49
→ os653: buffer_, 07/02 23:49
→ os653: byref(bi), DIB_RGB_COLORS) 07/02 23:50
→ os653: 抱歉忘了對齊code,總之叫Windows API的時候可以那樣傳沒錯 07/02 23:51
→ vgy: 還是有需要加 甚麼typemap嗎 07/03 15:08