如何调用C++;带有int&;和C#中的int*参数? 我的C++ DLL有这样的函数: void func1(int& count, int* pValue);

如何调用C++;带有int&;和C#中的int*参数? 我的C++ DLL有这样的函数: void func1(int& count, int* pValue);,c#,c++,C#,C++,此函数将确定“count”,并将一些值放入pValue int数组中,该数组是“count”的长度 如何定义我的C#代码?您可以忽略[DllImport…]部分 谢谢,ref&据我所知不会发生 >不要忘记从C++导出函数,作为外部“C”< /C> > /P> 根据C#side的说法,我认为你想要如下的东西 public static extern void func1( out int count, [MarshalAs(UnmanagedType.LPArray, SizePa

此函数将确定“count”,并将一些值放入pValue int数组中,该数组是“count”的长度

如何定义我的C#代码?您可以忽略[DllImport…]部分


谢谢,

ref
&
据我所知不会发生

<> >不要忘记从C++导出函数,作为<代码>外部“C”< /C> > /P> 根据C#side的说法,我认为你想要如下的东西

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

其中,
SizeParamIndex
告诉.net哪个参数将保存要封送的数组的大小。

谢谢你,Greg。我已要求他们将int&更改为int*。我仍然对int*PValue参数感到困惑。在这里C++的意思是int数组。如果我使用了[c]中的[OutOtj] int pValm,我怎么使用数组?也在文章中提到:[Objt]会被忽略。例如,[OutAttribute]int没有任何意义,因此[OutAttribute]被CLR忽略。[OutAttribute]字符串也是如此,因为字符串是不可变的。--我不能将[OutAttribute]与int一起使用?好的,我想我可以将[Marshallas(UnmanagedType.LPArray)]Int32[]用于这两个参数。我还需要[OutAttribute]吗?这两个参数实际上是“out”类型。