作者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://webptt.com/cn.aspx?n=bbs/Python/M.1498999943.A.356.html
1F:→ os653: 你没写错吧? 07/02 23:48
2F:→ os653: 以前写的 07/02 23:49
3F:→ os653: # 把资料抓到 buffer 07/02 23:49
4F:→ os653: buffer_ = create_string_buffer(buffer_size) 07/02 23:49
5F:→ os653: GetDIBits(hdc, self.handle, 0, 07/02 23:49
6F:→ os653: bmp.bmHeight, 07/02 23:49
7F:→ os653: buffer_, 07/02 23:49
8F:→ os653: byref(bi), DIB_RGB_COLORS) 07/02 23:50
9F:→ os653: 抱歉忘了对齐code,总之叫Windows API的时候可以那样传没错 07/02 23:51
10F:→ vgy: 还是有需要加 甚麽typemap吗 07/03 15:08