Python列表我得到了,我可以得到它的指針,並通過該指針,指向C++ Python列表上修改從C++
MyPointer = TheList.as_pointer()
工作,現在我這個地址傳遞給C++與ctypes的
在C++中,我可以做到以下幾點:
*(float*) MyPointer = 2.0f; //for example
和Python的值將立刻更新,現在的問題是: 如何擴展或刪除一些值(如修改列表直接LY從C++) 因爲我感覺這些數據是一個std::vector
怎麼辦push_back
等具有快速的方式來調整大小(如迭代在Python是非常慢)
'as_pointer'似乎是Blender的特定據我可以看到... ...總之,一個Python'list'是*不*實現爲'的std ::矢量',這是一個自己的數據結構。您需要將指針轉換爲該數據類型才能使用它。該類型在[Python C API](http://docs.python.org/2/c-api/)中定義。 – 2013-04-05 12:24:13
當你想使用Python C-API時,你最好寫一個C擴展模塊,而不是使用ctypes,參見http://docs.python.org/2.7/extending/index.html和http:// docs。 python.org/2.7/c-api/list.html – 2013-04-05 12:25:48
@KonradRudolph真正來自Blender Python api :) – 2013-04-05 12:30:43