- 论坛徽章:
- 0
|
谢谢楼上timespace,但是楼上例子似乎没有解决我的问题。
如果C代码改成如下:
c代码如下:
int write(char* in, char*out,int len)
{
int i;
for(i = 0; i < len; i++)
{
out = in;
}
return len;
}
//新增一个函数
int fill(char* out,int len)
{
strncpy(out,"initialized string", len-1);
out[len-1] = '\0';
return strlen(out);
}
编译生成库libaa.so
就会出现如下情况:
>>> libaa = cdll.LoadLibrary('./libaa.so')
>>> p = create_string_buffer( 8 )
>>> psrc='abcdefgh'
>>> libaa.write( psrc , p , 8 )
8
>>> p.raw
b'a\x00\x00\x00b\x00\x00\x00'
>>> libaa.fill( p, 8 )
7
>>> p.raw
b'initial\x00'
很明显,fill函数调用成功,而write函数未成到预想结果。求解。
楼上例子有点类似于fill函数。
请大侠指点。 |
|