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

看板Python作者時間8年前 (2017/07/02 20:52), 編輯推噓0(0010)
留言10則, 2人參與, 最新討論串1/2 (看更多)
我用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

07/02 23:48, , 1F
你沒寫錯吧?
07/02 23:48, 1F

07/02 23:49, , 2F
以前寫的
07/02 23:49, 2F

07/02 23:49, , 3F
# 把資料抓到 buffer
07/02 23:49, 3F

07/02 23:49, , 4F
buffer_ = create_string_buffer(buffer_size)
07/02 23:49, 4F

07/02 23:49, , 5F
GetDIBits(hdc, self.handle, 0,
07/02 23:49, 5F

07/02 23:49, , 6F
bmp.bmHeight,
07/02 23:49, 6F

07/02 23:49, , 7F
buffer_,
07/02 23:49, 7F

07/02 23:50, , 8F
byref(bi), DIB_RGB_COLORS)
07/02 23:50, 8F

07/02 23:51, , 9F
抱歉忘了對齊code,總之叫Windows API的時候可以那樣傳沒錯
07/02 23:51, 9F

07/03 15:08, , 10F
還是有需要加 甚麼typemap嗎
07/03 15:08, 10F
文章代碼(AID): #1PMEo7DM (Python)
文章代碼(AID): #1PMEo7DM (Python)