Passing a C++ pointer between C and Python -
i have python extension module written in c++, contains multiple functions. 1 of these generates instance of custom structure, want use other functions of module in python follows
import mymodule var = mymodule.genfunc() mymodule.readfunc(var) to this, i've tried using pycapsule objects pass pointer these objects between python , c, produces errors when attempting read them in second c function ("pycapsule_getpointer called invalid pycapsule object"). python, however, if asked print pycapsule object (var) correctly identifies "'capsule object "testcapsule"'. c code appears follows:
struct mystruct { int value; }; static pyobject* genfunc(pyobject* self, pyobject *args) { mystruct var; pyobject *capsuletest; var.value = 1; capsuletest = pycapsule_new(&var, "testcapsule", null); return capsuletest; } static pyobject* readfunc(pyobject* self, pyobject *args) { pycapsule_getpointer(args, "testcapsule"); return 0; } thank help.
like stated in comment question, you'll run issue when reading data local variable mystruct var. can use third destructor pycapsule_new.
but that's not reason problem now. you're using pycapsule_getpointer(args, "testcapsule") on args parameter. , since it's not capsule, though var one, might have defined signature of function meth_varargs. instead need unpack tuple or use meth_o.
Comments
Post a Comment