使用out参数从c#调用本机c ++代码

时间:2015-01-15 14:06:48

标签: c# c++ native out

所以我试图从一些c#代码在dll中运行c ++本机函数。它工作正常,但是,当我在函数调用中使用'out'时,我会遇到内存访问冲突。这就是它的样子:

C#功能

[DllImport(pluginName)]
public static extern IntPtr AddTriangleFixtuers(ShapeDef shapeDef, IntPtr toBody, ref Vector2 vertices, int triangleCount, Vector3 row1, Vector3 row2, out int fixtureCount);

...

int test = 1;
B2D.AddTriangleFixtuers(def, body.body, ref shapeTriangles[0], shapeTriangles.Length/3, firstRow, secondRow, out test);

C ++函数

EXTERN_DLL_EXPORT b2Fixture* __stdcall AddTriangleFixtuers(ShapeDef shapeDef, IntPtr* toBody, b2Vec2* vertices, int triangleCount, b2Vec3 row1, b2Vec3 row2, int& fixtureCount) {
    fixtureCount = 0;

    b2Fixture* lastFixture = NULL;
    return lastFixture;
}

我已经将代码最小化以突出我遇到的问题。一旦我尝试将c ++代码中的fixtureCount设置为任何内容,我就会收到以下错误:

  

Assembly-CSharp.DLL中发生了'System.AccessViolationException'类型的异常,但未在用户代码中处理   附加信息:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

0 个答案:

没有答案