1个回答
展开全部
用 ctypes, 接收返回的对象建个类, 类似下面这种:
from ctypes import *
class StandGo(Structure):
_fields_ = [("x", c_int),("y", c_int)]
接收对象赋值给这个类应该就可以了
具体的看ctypes的文档了,自己试下了
更多追问追答
追问
class st(Structure):
_fields_=[('a', c_int), ('b', c_int)]
so = CDLL('./liba.so')
s = st()
s.a=1
s.b=2
11 ret = so.callfun(s)
12 sret = st(ret)
print sret.a, sret.b
请问是像11 与12行这样操作吗,可输出的是1 ,0。应该是1,2才对
追答
你是要返回啊,你这里做的是传值过去啊,还有名称 'a' 和 'b' 应该和c源码里的一样
c:
struct beer_recipe
{
int author;
int title;
};
python:
class beer_recipe(Structure):
_fields_ = [
("author",c_int),
("title",c_int),
]
或者
11 ret = so.callfun(s)
后 试试看
print ret.a, ret.b
另外随便说一点,跨语言操作,尽量别返回复杂类型了,最好都是字符串或者字符串指针,返回后处理起来也方便
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询