J'ai un tableau irrégulier que je dois passer à la méthode externe.Instruction fixe avec tableau dentelé
[DllImport(...)]
private static extern int NativeMethod(IntPtr[] ptrArray);
...
fixed (ulong* ptr = array[0])
{
for (int i = 0; i < array.Length; i++)
{
fixed (ulong* p = &array[i][0])
{
ptrArray[i] = new IntPtr(p);
}
}
NativeMethod(ptrArray);
}
Le problème est que ptr est inutilisé et est retiré en raison de la compilation. La déclaration fixe selon elle est supprimée aussi. Donc, le tableau est déplacé par GC de cette façon que les éléments ptrArray deviennent invalides. Quel est le meilleur moyen de faire passer des tableaux dentelés sous la forme de tableaux unidimensionnels de pointeurs vers des méthodes natives?
Mise à jour:
Voici le code C++ pour NativeMethod:
NativeClass::NativeMethod(const int* array)
Quelle est votre méthode native ressemble à quel est le paramètre réel qu'il prend? –
mis à jour - ajout du code C++ – levanovd
La déclaration C++ n'est pas * * pour un tableau en escalier, qui nécessiterait un argument int **. Difficile de vous aider. –