Saya memiliki variabel Kamus dalam file C# saya Rec.cs yang didefinisikan sebagai:

Dictionary<string, PrepDumpLoadItem> pPrepDumpLoadList 

pPrepDumpLoadList ini diisi dengan kunci dan nilai seperti berikut

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);
                }

Setelah kode di atas, pPrepDumpLoadList memiliki 12 entri, yang berarti jumlah == 12;

Setelah itu diteruskan ke file C++ WrapperRec.cpp, di mana setiap entrinya seharusnya diekstraksi, dan diteruskan/disalin ke variabel C++ std::map PrepDumpLoadList. Ini didefinisikan sebagai

std::map<std::string, PrepDumpLoadItem> PrepDumpLoadList;

Dalam struktur SRecParameters di SRecParameters.h

Berikut adalah tampilan PrepDumpLoadList dalam mode debug (visual studio 2015):

masukkan deskripsi gambar di sini c# c++ dictionary stl stdmap

1
Nick X Tsui 10 Januari 2018, 19:54

1 menjawab

Jawaban Terbaik

Saya melakukan jalan-jalan dengan membuat List di C#, lalu memproses (marshal) setiap item di List ini. dan letakkan di C++ std::map.

0
Nick X Tsui 18 Januari 2018, 16:29