Swig-自定义对象的向量作为返回参数

问题描述 投票:0回答:1

如果我有这样的c ++函数...

int myfunc(int a, std::vector<float> *b);

而且我的.i文件中有这个文件...

%apply std::vector<float>* OUTPUT {std::vector<float>*};

然后在python中,我可以这样做...

_,bout = mylib.myfunc(1)

bout将是我想要的浮点列表。...是的!

但是现在我想用c ++做到这一点...

int myfunc(int a, std::vector<MyObj> *b);

简单地执行以下操作无效...

%apply std::vector<MyObj>* OUTPUT {std::vector<MyObj>*};

它给ma提供了错误的类型或数量的Python错误。通过将其添加到我的.i文件中,我发现了一种不理想的方法...

%include "std_vector.i"
namespace std {
    %template(vectormyobj) vector<MyObj>;
}

然后在python中,我可以这样做...

bout = mylib.vectormyobj()
_ = mylib.myfunc(1,bout)

在这种情况下,bout是我的自定义类型的列表,一切正常。...EXCEPT我真的很想在=的左侧获得bout,而不必通过它作为争论。似乎我需要一些%typemap(in)和/或%typemap(argout)Swig-fu才能使其正常工作,但我一直无法将其包围。

任何人都可以提供指导吗?

python vector swig
1个回答
0
投票

终于我弄清楚了如何使这项工作...

© www.soinside.com 2019 - 2024. All rights reserved.