У меня есть проект C #, который использует dll C ++. (в Visual Studio 2010)
Мне нужно передать массив int из кода C # в функцию C ++, и функция C ++ добавит несколько элементов в массив, когда управление вернется к коду C #, код C # также добавит элементы в тот же массив .
Изначально я объявил массив (размером 10000) в коде C #, и код 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;
}