在C#code和C+之间传递的变量值中未反映的更改+;代码 我有一个应用程序,它使用C语言前端和C++ DLL作为后端。我试图把一个数组从C++代码传递给DLL中的C++代码,这些代码改变了数组中的值。但是,当尝试调用C +代码后,从C++代码中检索数组的值时,这些更改没有被反映。我希望这些变化得到反映。请在这方面帮助我

在C#code和C+之间传递的变量值中未反映的更改+;代码 我有一个应用程序,它使用C语言前端和C++ DLL作为后端。我试图把一个数组从C++代码传递给DLL中的C++代码,这些代码改变了数组中的值。但是,当尝试调用C +代码后,从C++代码中检索数组的值时,这些更改没有被反映。我希望这些变化得到反映。请在这方面帮助我,c#,c++,C#,C++,谢谢, 拉凯什 以下是我正在使用的函数的签名 在C#中: structs是我正在传递的结构数组 在C++中: extern "C" __declspec(dllexport) void __cdecl testStruct(structure1* arrStruct, int len) ARRStutt是接收C中传递的结构数组。 < P>数组正在按值 >强> > c++dll,这意味着C++ C++ DLL正在处理原始数组的副本。数组需要通过引用< > >以便C++代码操作C代

谢谢, 拉凯什


以下是我正在使用的函数的签名

在C#中:

structs是我正在传递的结构数组

在C++中:

extern "C"  __declspec(dllexport)  void __cdecl  testStruct(structure1*  arrStruct, int len)

ARRStutt是接收C中传递的结构数组。

< P>数组正在按值<强> >强> > c++dll,这意味着C++ C++ DLL正在处理原始数组的副本。数组需要通过引用< <强> > <强> >以便C++代码操作C代码所指的同一个数组。


<>而不是研究引用引用数组的方法,你可能需要考虑改变C++接口,以便将操作数组返回到C代码中,例如返回值。

< P>数组被“强”>值> <强> >到C++ DLL,这意味着C++的DLL正在处理原始数组的副本。数组需要通过引用< <强> > <强> >以便C++代码操作C代码所指的同一个数组。

< >而不是研究引用引用数组的方法,您可能需要考虑更改C++接口,以便将操作数组返回到C代码中,例如返回值。
void fill(int* buffer, size_t length)
{
  for (int i = 0; i < length; ++i)
    buffer[i] = i;
}

如果您的本机方法在修改内容之前必须先修改内容,也可以使用
[In,Out]

在本机代码中:

void fill(int* buffer, size_t length)
{
  for (int i = 0; i < length; ++i)
    buffer[i] = i;
}


如果您的本机方法在修改内容之前必须先修改内容,您也可以使用
[In,Out]

请发布正在使用的签名(或查找)。请发布正在使用的签名(或查找)
[DllImport("Foo")]
static void fill([Out] int[] buffer, UIntPtr length);