Ich schreibe einen Wrapper in C++/CLI (VS 2015) für gegebenen C++ - Code, um schließlich die generierte verwaltete DLL in C# zu verwenden. Daher habe ich eine verwaltete Klasse erstellt, die eine native Klasse aufruft. Diese native Klasse verknüpft den angegebenen C++ - Code aufgrund einer Factory-Methode, die einen unique_ptr <> zurückgibt.Zuordnung von C++ - spezifischen Funktionen zu C++/CLI
Jetzt habe ich stecken, weil die C++ Code einen Rückruf hat:
Callback(std::function<void(const Result &>)
Ergebnis ist vom Typ
std::vector<std::pair<float, float>>
Fragen:
- Wie kann ich die Callback-Karte Argument Std :: Funktion <> in C++/CLI?
Wo & wie muss ich die C++ verwandeln sich ergebende Struktur (Vektor von Paaren) zu .NET Datenstruktur (Liste von Tupeln) in Bezug auf den Rückruf es in C# zugreifen?
Ist es möglich, Lambda-Ausdrücke (mit .NET-Auflistungen) zu schreiben, die der nicht verwalteten Datenstruktur (Vektor) zugeordnet werden?
unsigned int cnt = 0; nativeClass->Callback([&cnt] (const Result &v) { auto it = d::max_element(v.begin(), v.end(), [](const Pair &a, const Pair &b) { return a.second < b.second; }); // do something with iterator it // … cnt++; });
Muss ich einen Lambda-Ausdruck-Wrapper deshalb schreiben?