问题
我试图转换一个列表列表,由一个称为C++代码内部的Python函数返回。尽管
平键11
库允许从Python数据类型到C++数据类型的转换,我尝试将Python返回的列表列表转换为
std::list
属于
STD::列表
C++的字符串,每次都失败。
代码
下面是python函数(函数返回包含字符串值的列表):
def return_sheet(self):
"""Returns the sheet in a list of lists
"""
dataTable = []
for r in range(self._isheet.nrows):
datalist = []
for c in range(self._isheet.ncols):
datalist.append(self._isheet.cell_value(r,c))
dataTable.append(datalist)
return dataTable
这里我用C++调用它
平键11
:
py::list obj = _tool.attr("return_sheet")();
data = py::cast<SheetData>(obj); // This is where the problem lies, This cast crashes the program
在哪里?
SheetData
是一个
typedef
为:
typedef std::list<std::list<std::string> > SheetData;
在调试过程中,我发现程序实际上在这一行崩溃:
py::object dataTable = _tool.attr("return_sheet")(); // Where _tool.attr("return_sheet")() gives an py::object which is a list of list of str
有人知道,我怎样才能成功地将python列表转换为
STD::列表
属于
STD::列表
C++的?
编辑
下面是我在C++中嵌入的Python程序文件[XListal.py]:
https://pastebin.com/gARnkMTv
这里是C++代码[Maun.CPP]:
https://pastebin.com/wDDUB1s4
注意:XLySalt.Py中的所有其他函数不会在C++中嵌入崩溃(只有ReTurnSeTE()函数导致崩溃。