Comment passer à C# tableau de C++ et de la retourner en C# avec des éléments supplémentaires?

J'ai un projet C# qui utilise une dll C++. (dans visual studio 2010)

J'ai passer un tableau de int à partir de code C#, C++ la fonction et la fonction C++ ajouter quelques éléments dans le tableau, lorsque le contrôle revient à code C#, C# code sera également ajouter des éléments dans le même tableau.

Au départ, j'ai déclaré un tableau(de taille 10000) dans le code C# et C++ code est capable d'ajouter des éléments (parce que c'était juste un tableau de int, de l'allocation de mémoire est la même), mais le problèmes c'est que j'ai eu erreur d'exécution en raison de l'accès côté du tableau.

Je peux augmenter la taille de 100000 mais encore une fois je ne sais pas combien d'éléments de code C++ ajouter( même c'est peut être juste 1 élément).

Donc, il y a une commune de la structure de données (tableau dynamique) existent pour les deux ou autre façon de faire? Je suis à l'aide de Visual studio 2010.

Quelque chose comme ce que je veux faire.

PS: pas de code compilé, et ici j'ai utilisé char tableau au lieu de int tableau.

De code 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
}

Code 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;
}
Nous montrer un peu de code
Pouvez-vous utiliser C++/CLI?Pouvez-vous utiliser C++/CLI?
Vous ne pouvez pas ajouter des éléments à un tableau. Les tableaux sont fixes dans la taille. Utiliser une autre structure de données ou modifier la façon dont vous l'interface entre les deux.
ce n'était pas exactement "ajouter", j'ai ajouté du code pour effacer de mon côté

OriginalL'auteur Vikas Kumar | 2011-10-02