Как передать массив C # в C ++ и вернуть его обратно в C # с дополнительными элементами?

У меня есть проект 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;
}
12
задан afuzzyllama 17 May 2016 в 15:31
поделиться