我正在创建小型 GUI 系统,我想使用 python、cairo 和 pystacia 库进行渲染。对于 C++/Python 交互,我使用的是 Boost Python,但我遇到了指针问题。
我见过这种问题被问过几次,但不太明白如何解决。
如果我有一个只有图像数据指针的 strcut/class:
struct ImageData{
unsigned char* data;
void setData(unsigned char* data) { this->data = data; } // lets assume there is more code here that manages memory
unsigned char* getData() { return data; }
}
我怎样才能让python可以做到这一点(C++):
ImageData myimage;
myimage.data = some_image_data;
global["myimage"] = python::ptr(&myimage);
在python中:
import mymodule
from mymodule import ImageData
myimagedata = myimage.GetData()
#manipulate with image data and those manipulations can be read from C++ data pointer that is passed
我的代码用于调用将传递的 ptr 传递给类的基本方法。这可能是基本用例,但我无法使其工作。我试过 shared_ptr 但失败了。是否应该使用 shared_ptr、代理类或其他方式来解决?