我有一个C#项目正在使用C++ DLL。 (在Visual Studio 2010)
我不得不INT的从C#代码一个数组传递到C++函数和C++时控制又回到C#代码功能将加在阵列中,少量元素,C#代码也将增加在相同的数组元素。
最初我声明在C#代码和C一阵列(的大小10000)++代码能够添加元素(因为它只是一个int数组,存储器分配是相同的),但存在的问题是我有运行时间错误由于访问数组的一面。
如何将C#数组传递给C++并使用其他项将其返回给C#?
我可以将大小增加到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;
}
向我们展示一些代码 –
你可以使用C++/CLI?你可以使用C++/CLI? –
您无法将项目“添加”到数组中。数组的大小是固定的。使用不同的数据结构或更改两者之间的连接方式。 –