继上一个问题中的回答者的推荐,我采用了 pybind11 来编写 https://www.v2ex.com/t/567858#reply11
现在的问题是,我无法让函数正确返回这个 vector<string>,里面是 4 个二进制字符串,win 上写入文件大小大约在 33-70kb</string>
因为直接返回 vector<string>会出现 utf-8 无法识别 0x01 之类的报错,然后用了 py::bytes 这个方法</string>
我尝试了用引用,这招在 pybing11 的文档里说了不可行,实际也是
也试过不用 vector<string> 用 py<list>之类的代替,也不行,结果就是 IndexError: list assignment index out of range</list></string>
如果我采用 py::list 的方式返回,会出现 IndexError: list assignment index out of range
py::list regist() {
vector<string> data;
...
py::list list;
list[0] = py::bytes(data[0]);
list[1] = py::bytes(data[1]);
list[2] = py::bytes(data[2]);
list[3] = py::bytes(data[3]);
return list;
}
PYBIND11_MODULE(seals, m) {
m.def("regist", ®ist, py::return_value_policy::reference);
}
令人惊讶的是,如果我只返回这四个二进制字符串的一个,是完全没有问题的 例子
return py::bytes(data[0]);
我有点蒙,请求各位帮助~!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.