我有一个使用C++ dll的C#项目。(在visual studio 2010中)
我需要从C#代码传递一个int数组到C++函数中,C++函数将在数组中添加一些元素,当控制返回到C#代码时,C#代码也将在同一个数组中添加元素。
最初我在C#代码中声明了一个大小为10000的数组,C++代码能够添加元素(因为它只是一个int数组,内存分配是相同的),但问题是我由于访问数组外部而遇到运行时错误。
我可以将大小增加到100000,但我仍然不知道C++代码会添加多少元素(可能只是1个元素)。
所以是否存在一种通用的数据结构(动态数组)或其他方法可供使用?我正在使用Visual Studio 2010。
像这样的东西我想做。
PS: 这不是编译过的代码,并且在此示例中我使用char数组而不是int数组。
C#代码
[DllImport("example1.dll")]
private static extern int fnCPP (StringBuilder a,int size)
...
private void fnCSHARP(){
StringBuilder buff = new StringBuilder(10000);
int size=0;
size = fnCPP (buff,size);
int x = someCSHARP_fu();
for ( int i=size; i < x+size; i++) buff[i]='x';// possibility of run time error
}
C++ 代码
int fnCPP (char *a,int size){
int x = someOtherCpp_Function();
for( int i=size; i < x+size ; i++) a[ i ] = 'x'; //possibility of run time error
return size+x;
}