J'ai la DLL simple suivante dans le code non géré C++;C# Wrapper au code C++ natif, envelopper un paramètre qui est un pointeur vers un tableau
extern "C" __declspec(dllexport) void ArrayMultiplier(float (*pointerArray)[3], int scalar, int length);
void ArrayMultiplier(float (*pointerArray)[3], int scalar, int length)
{
for (int i = 0 ; i < length ; length++)
{
for (int j = 0; j < 3; j++)
{
pointerArray[i][j] = pointerArray[i][j] * scalar;
}
}
}
J'ai essayé d'écrire la fonction enveloppe suivante pour ce qui précède en C#:
[DllImport("sample.dll")]
public static extern void ArrayMultiplier(ref float elements, int scalar, int length);
où les éléments est un tableau 3x3 dimentionnelle 2:
public float[][] elements =
{
new float[] {2,5,3},
new float [] {4,8,6},
new float [] {5,28,3}
};
Le code ci-dessus compiles, mais le programme se bloque lorsque la fonction wrapper est appelée:
Wrapper.ArrayMultiplier(ref elements, scalar, length);
S'il vous plaît aidez-moi, et dites-moi ce qui est mal avec le code ci-dessus, ou comment un emballage peut être écrit pour un simple C++ fonction:
void SimpleFunction(float (*pointerToArray)[3]);
Merci à tous à l'avance
Une raison pour laquelle vous n'avez PAS ACCEPTÉ cette réponse? Ça me va bien! – Goz