У меня есть структура C # для представления декартового вектора, что-то вроде этого:
public struct Vector
{
private double x;
private double y;
private double z;
//Some properties/methods
}
Теперь у меня есть неуправляемый Cll, который мне нужно вызвать с помощью P / Invoke. Некоторые методы ожидают двойной параметр [3].
Неуправляемая сигнатура C - это что-то вроде
void Cross(double a[3], double b[3], double c[3]);
Есть ли способ установить сигнатуру P / Invoke, чтобы я мог передавать экземпляры моей структуры Vector и прозрачно распределять их по неуправляемому double [3]? Мне также понадобится двунаправленный маршалинг, поскольку неуправляемая функция должна записывать вывод в массив аргументов, поэтому я предполагаю, что мне нужно маршалировать как LpArray.