2010-06-23 303 views

回答

2

由参&是不会,因为我已经制定了尽可能的情况发生。

MSDN has the answers you seek

,不要忘记给你的函数从C++导出为extern "C"

根据MSDN: Default marshaling for arrays C#的身边,我想你想的东西像下面

public static extern void func1( 
    out int count, 
    [MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0)] int[] values); 

SizeParamIndex告诉.net哪个参数将保持数组的大小被编组。

+0

谢谢你,Greg。我已要求他们将int&更改为int *。我仍然被int * PValue参数弄糊涂了。这里的C++端意味着一个int数组。如果我在C#端使用“[OutAttribute] int pValue”,我该如何使用数组? – 5YrsLaterDBA 2010-06-24 02:37:30

+0

并且在那篇文章中也提到: - 有些情况下[OutAttribute]将被忽略。例如,[OutAttribute] int没有任何意义,所以[OutAttribute]简单地被CLR忽略。 [OutAttribute]字符串也是如此,因为字符串是不可变的.---我不能在int中使用[OutAttribute]? – 5YrsLaterDBA 2010-06-24 02:42:31

+0

好吧我想我可以使用这个:[MarshalAs(UnmanagedType.LPArray)] Int32 []为这两个参数。我还需要[OutAttribute]吗?这两个参数确实是“out”类型。 – 5YrsLaterDBA 2010-06-24 03:12:41

相关问题