仅在Windows应用商店项目中使用C ++ dll并在设备上运行时才会出现此问题。与Android或iOS项目一起使用时,它可以正常工作。
我在一些本机c ++代码中有一个结构,如下所示:
struct InteropVector2 {
float32 x;
float32 y;
InteropVector2(float32 x, float32 y) : x(x), y(y) {}
InteropVector2() {}
};
非常简单,没什么特别的。所以我在C#中创建了另一个结构,以便在需要将此结构从C#传递给C ++时使用:
[StructLayout (LayoutKind.Sequential, Pack = 4)]
public struct InteropVector2
{
public float x;
public float y;
public InteropVector2(float x, float y)
{
this.x = x;
this.y = y;
}
}
也很简单。但是,当我将它从C#传递给C ++时,x和y值都是0.0,无论我传入的是什么。但是如果我删除C ++结构中的无参数构造函数,它就像魅力一样。我需要在C ++代码中使用无参数构造函数。任何想法我怎么能做到这一点?
以下是这些结构的使用示例:
C ++
EXTERN_DLL_EXPORT bool __stdcall TestMyVector2(InteropVector2 p1) {
LOG("[C++] Vector2: (%f %f)", p1.x, p1.y);
return false;
}
C#
[DllImport(pluginName)]
public static extern bool TestMyVector2(InteropVector2 p1);
和
var = B2D.TestMyVector2(new InteropVector2(1.44f, 2.55f)));