У меня есть проект C #, который использует C ++ DLL. (в визуальной студии 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;
}