我的C#文件 Rec.cs 中有一个Dictionary变量,定义为:
Dictionary<string, PrepDumpLoadItem> pPrepDumpLoadList
此
pPrepDumpLoadList
充满了键和值,如下所示foreach (XElement element in root.Elements())
{
PrepDumpLoadItem item = new PrepDumpLoadItem();
item.Name = element.Name.ToString();
string isDumpMode = GetValueString(element, "Dump", "enabled");
if (isDumpMode == "1")
{
item.PrepDumpLoadMode += PrepDumpLoadModeType.DUMP;
item.HeaderFile = GetValueString(element, "Dump", "header");
item.DataFile = GetValueString(element, "Dump", "data");
//pPrepDumpLoadList.Add(item.Name, item);
}
string isLoadMode = GetValueString(element, "Load", "enabled");
if (isLoadMode == "1")
{
item.PrepDumpLoadMode += PrepDumpLoadModeType.LOAD;
item.HeaderFile = GetValueString(element, "Load", "header");
item.DataFile = GetValueString(element, "Load", "data");
//pPrepDumpLoadList.Add(item.Name, item);
}
pPrepDumpLoadList.Add(item.Name, item);
}
在上面的代码之后,
pPrepDumpLoadList
有12个条目,这意味着其数量== 12;然后,将其传递到C++文件 WrapperRec.cpp 中,应该提取其中的每个条目,然后传递/复制到C++
std::map
变量PrepDumpLoadList
中。定义为std::map<std::string, PrepDumpLoadItem> PrepDumpLoadList;
SRecParameters.h中的
SRecParameters
结构内这是
PrepDumpLoadList
在 Debug模式下的外观(Visual Studio 2015):看起来不错。
recon
作为参数传递,例如void WrappedRecon::CreateImpl( ScanParameters scan,
ReconParameters recon,
ScannerParameters scanner,
MessageHandler^ msgHandler
)
并且我相信它是一个与
SRecParameters
相同/相似的结构变量。但是,我很难从
PrepDumpLoadList
,C#的Dictionary变量中提取条目。我努力了
map<std::string, PrepDumpLoadItem>::iterator it = recon.PrepDumpLoadList.begin();
但红色摆动出现在
recon
下方,并且编译错误提示错误C2228:'.begin'的左侧必须具有class / struct / union 我对这里发生的事情感到非常困惑。我只是在尝试类似
for (int i = 0; i<recon.PrepDumpLoadList->Count; ++i) {
CopyString(item.Name, recon.PrepDumpLoadList[i].Name, sizeof(item.Name));
item.PrepDumpLoadMode = static_cast<DumpLoadModeType>(recon.PrepDumpLoadList[i].PrepDumpLoadMode);
CopyString(item.HeaderFile, recon.PrepDumpLoadList[i].HeaderFile, sizeof(item.HeaderFile));
CopyString(item.DataFile, recon.PrepDumpLoadList[i].DataFile, sizeof(item.DataFile));
reconParams.PrepDumpLoadList.push_back(item);
}
从Dictionary变量中提取信息,并将其推回到std::map变量。任何人都可以提供一些指示,指出问题所在以及如何解决?非常感谢。
最佳答案
我通过在C#中创建List
进行了走动,然后处理(编码)此List
中的每个项目。并将它们放在C++ std::map
中。