Wie rufe ich eine nicht verwaltete C ++ - Funktion mit einem std :: vector als Parameter aus C # auf?

Ich habe aus Performancegründen ein C # -Frontend und ein C ++ - Backend. Jetzt möchte ich eine C ++ - Funktion wie zum Beispiel aufrufen:

void findNeighbors(Point p, std::vector<Point> &neighbors, double maxDist);

Was ich haben möchte, ist eine C # Wrapper-Funktion wie:

List<Point> FindNeigbors(Point p, double maxDist);

Ich könnte ein flaches Array wie Point [] an die nicht verwaltete C ++ - DLL übergeben, aber das Problem ist, dass ich nicht weiß, wie viel Speicher ich zuweisen soll, da ich nicht weiß, wie viele Elemente die Funktion zurückgibt. .

Gibt es eine elegante Möglichkeit, dies zu handhaben, ohne Probleme mit Speicherlecks zu haben?

Danke für Ihre Hilfe

Benjami

Antworten auf die Frage(8)

Ihre Antwort auf die Frage