2013-12-16 37 views
3

我有一个C#的问题。我试图调用以下C++方法。如何在c#中的内存中直接创建结构?

void SetPropertyInfoList(int count, ref AfwPropertyInfo propertyInfo); 

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

任何人都可以帮助我吗?

+0

您是否尝试过使用'AfwPropertyInfo [2]'创建一个结构数组? –

回答

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); 
+0

感谢您的快速回答。我的方法属于一个对象。该方法如何知道它属于哪个对象? – user3107989

+0

您无法调用/调用实例方法。只有非成员函数或静态函数。 –

相关问题