私は、C++ アンマネージ コードに次の単純な DLL を持っています。
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;
}
}
}
上記の次のラッパー関数をc#で記述しようとしました:
[DllImport("sample.dll")]
public static extern void ArrayMultiplier(ref float elements, int scalar, int length);
ここで、要素は 2 次元の 3x3 配列です。
public float[][] elements =
{
new float[] {2,5,3},
new float [] {4,8,6},
new float [] {5,28,3}
};
上記のコードはコンパイルされますが、ラッパー関数が呼び出されるとプログラムがクラッシュします。
Wrapper.ArrayMultiplier(ref elements, scalar, length);
ここで私を助けてください、そして上記のコードの何が問題なのか、または単純な C++ 関数のラッパーをどのように書くことができるのか教えてください:
void SimpleFunction(float (*pointerToArray)[3]);
よろしくお願いします