python 调用c++程序, c++程序如何返回数组给python
比如python调用一个c++程序,c++程序里定义一个数组floatx[5]={1,2,3,4,5},最后要把这个数组返回到python,要怎么做呢?目前找到的例子都是...
比如python调用一个c++程序,c++程序里定义一个数组float x[5] = {1,2,3,4,5},最后要把这个数组返回到python,要怎么做呢?
目前找到的例子都是把cpp文件编译成.so文件,然后在python里用ctypes调用。试了一下发现如果c++返回一个值,是可以的。但不知道要怎么返回数组。
先谢过各位大神了!!! 展开
目前找到的例子都是把cpp文件编译成.so文件,然后在python里用ctypes调用。试了一下发现如果c++返回一个值,是可以的。但不知道要怎么返回数组。
先谢过各位大神了!!! 展开
2个回答
展开全部
C/C++不能直接返回一个数组。这是由于在C/C++中,数组不是一种类型,因此不能被直接返回。
一般有两种方法来返回一个数组。
第一种方法:
返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组
第二种方法:
如果你不喜欢用指针的形式返回数组,那么可以采用返回一个结构的形式。这种形式相对较安全,可以避免忘记释放指针而造成内存泄露,也可以避免访问悬挂指针造成的错误。但缺点是由于结构是先拷贝再返回,因此如果结构较大时,会影响效率和占用较大内存。
这是C的限制,Python调用C也是这种情况
一般有两种方法来返回一个数组。
第一种方法:
返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组
第二种方法:
如果你不喜欢用指针的形式返回数组,那么可以采用返回一个结构的形式。这种形式相对较安全,可以避免忘记释放指针而造成内存泄露,也可以避免访问悬挂指针造成的错误。但缺点是由于结构是先拷贝再返回,因此如果结构较大时,会影响效率和占用较大内存。
这是C的限制,Python调用C也是这种情况
2017-03-29
展开全部
你说的调用是指什么,单纯拿标准输出的结果?
那你得吧数据以一些格式当成字符串输出,然后再用python解析字符串还原成你需要的格式。
那你得吧数据以一些格式当成字符串输出,然后再用python解析字符串还原成你需要的格式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询