Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C++;使用SWIG的指针? < >我想从C++指针创建一个Python缓冲对象(可写或不写),这样它就可以传递到 NoMpy.FasBuffs函数。有人能告诉我怎么做吗 这是我的例子,用Sigg包的C++函数返回指针: uint8_t* some_function() {return new uint8_t[200];}_Python_Numpy_Swig - Fatal编程技术网

从C++;使用SWIG的指针? < >我想从C++指针创建一个Python缓冲对象(可写或不写),这样它就可以传递到 NoMpy.FasBuffs函数。有人能告诉我怎么做吗 这是我的例子,用Sigg包的C++函数返回指针: uint8_t* some_function() {return new uint8_t[200];}

从C++;使用SWIG的指针? < >我想从C++指针创建一个Python缓冲对象(可写或不写),这样它就可以传递到 NoMpy.FasBuffs函数。有人能告诉我怎么做吗 这是我的例子,用Sigg包的C++函数返回指针: uint8_t* some_function() {return new uint8_t[200];},python,numpy,swig,Python,Numpy,Swig,SWIG包装之后,我使用python创建了一个缓冲区对象: x = some_function() b = buffer_frompointer(x) z = numpy.frombuffer(b, dtype=numpy.uint8) 最后一条语句返回一个错误,表示未找到\uuuu buffer\uuuu属性。我猜这是因为变量b在python意义上并不是真正的缓冲区对象。那我该怎么办 另外,在创建numpy阵列时,我不需要额外的内存副本 另外,我们暂时不要担心内存泄漏问题 更新: 我仍然对这

SWIG包装之后,我使用python创建了一个缓冲区对象:

x = some_function()
b = buffer_frompointer(x)
z = numpy.frombuffer(b, dtype=numpy.uint8)
最后一条语句返回一个错误,表示未找到
\uuuu buffer\uuuu
属性。我猜这是因为变量
b
在python意义上并不是真正的缓冲区对象。那我该怎么办

另外,在创建numpy阵列时,我不需要额外的内存副本

另外,我们暂时不要担心内存泄漏问题

更新:


我仍然对这个问题的解决方案感兴趣,但如果没有人回答,我将采用我提出的解决方案,尽管由于使用了不推荐使用的接口,该解决方案不是首选方案。

请不要发布只包含代码的答案。继续解释你的解决方案你是如何解决OP的问题的。
import ctypes, numpy
bptr = int(b.cast())
barray = ctypes.c_byte*200
barray = barray.from_address(bptr)
z = numpy.ctypeslib.as_array(barray)