我在 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);
其中 elements 是一个二维 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]);
谢谢大家