В неуправляемом C ++ у меня есть функция, которую я пытаюсь вызвать из C #. Эта функция C ++ выглядит следующим образом:
typedef std::vector<Point> Points;
typedef std::back_insert_iterator<Points> OutputIterator;
namespace MYNAMESPACE{
DLLEXPORT OutputIterator convexHull(Points::iterator first, Points::iterator last, OutputIterator result);
}
При вызове из C ++ функция используется следующим образом:
Points points, result;
points.push_back(Point(0,0));
points.push_back(Point(10,0));
points.push_back(Point(10,10));
points.push_back(Point(6,5));
points.push_back(Point(4,1));
OutputIterator resultIterator = std::back_inserter(result);
MYNAMESPACE::convexHull( points.begin(), points.end(), resultIterator);
std::cout << result.size() << " points on the convex hull" << std::endl;
Я начал писать код на C #, но не знаю, какие типы я должен передавать:
[DllImport("unmanagedCode.dll", EntryPoint = "convexHull", CallingConvention = CallingConvention.StdCall)]
public static extern ???<Point> convex_hull_2(???<Point> start, ???<Point> last, ???<Point> result);
Структура Point в C # просто:
struct Point{
double x;
double y;
}
Это случай передачи массива или списка точек?
У меня есть источник для C ++, и я могу вносить изменения в параметры функции; Будет ли другой тип параметров, которые будет проще вызвать из C #?