Вам, вероятно, понадобится передать необработанные массивы, если вы действительно не хотите перепрыгивать через некоторые обручи с помощью взаимодействия, поскольку правила определяют, что типы должны либо быть доступными для фреймворка, либо для фреймворка конкретная структура это может маршал. Это, вероятно, невозможно для вектора. Таким образом, вы можете определить свою структуру C ++ как
#pragma pack(push, 8)
struct ReflSettings
{
double* Q;
double* DisplayQ;
}
#pragma pack(pop)
тогда ваша структура C # будет
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode, Pack = 8)]
public class ModelSettings:IDisposable
{
[XmlIgnore] internal IntPtr Q;
[XmlIgnore] internal IntPtr DisplayQ;
}
Надеюсь, это поможет.