У меня есть следующая проблема:
Код C ++:
typedef struct
{
double x;
double y;
double z;
} XYZ;
double Sum(XYZ xyz)
{
return xyz.x +xyz.y + xyz.z;
}
Код C #:
[StructLayout(LayoutKind.Sequential)]
public class XYZ
{
public double x;
public double y;
public double z;
}
[DllImport("MyUnmanaged.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern double Sum([MarshalAs(UnmanagedType.LPStruct)] XYZ xyz);
Когда я запускаю следующую C # main:
XYZ1 xyz1 = new XYZ1 { x = 1f, y = 1f, z = 1f};
var x = MarchingCubesWrapper.Sum(xyz1);
Я вижу, что значения структуры не были переданы в неуправляемую среду. Вот скриншот:
Не могли бы вы сказать, в чем проблема?