如何在c#的内存中直接创建结构?

时间:2013-12-16 16:16:06

标签: c# c++ pinvoke

我遇到了C#的问题。我试着按照C ++方法调用。

void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo);

我想用x AfwPropertInfo结构创建一个内存块。我不知道如何在记忆中直接跟在一起。

有人能帮助我吗?

1 个答案:

答案 0 :(得分:5)

你实际拥有的是一个数组。我希望C ++代码看起来像这样:

void SetPropertyInfoList(int count, AfwPropertyInfo* propertyInfo);

现在,AfwPropertyInfo*未完全指定参数是什么。它可以是指向单个AfwPropertyInfo结构的指针。或者它可以是AfwPropertyInfo的数组。显然在这种情况下是后者。

将p / invoke声明更改为:

[DllImport(...)]
static extern void SetPropertyInfoList(
    int count, 
    AfwPropertyInfo[] propertyInfo
);

创建结构数组:

AfwPropertyInfo[] propertyInfo = new AfwPropertyInfo[count];

然后在调用非托管函数之前初始化数组成员:

SetPropertyInfoList(propertyInfo.Length, propertyInfo);