将非指针转换为固定表达式中的指针类型
Cast non-pointer to pointer type in fixed expression
我对 C# 的不安全方面有点陌生,所以如果我在这里遗漏了一些明显的东西,请原谅我。
我正在查看一些使用 .NET Reflector 的代码,以了解 Oculus Rift 在 C# 中的一些实现,但我遇到了一堆错误,例如:
Error CS0030 Cannot convert type 'OVR.ViewScaleDesc' to 'OVR.ViewScaleDesc*'
Error CS0030 Cannot convert type 'OVR.LayerHeader' to 'OVR.LayerHeader*'
在下面的方法中
public unsafe Result SubmitFrame(
uint frameIndex, ref ViewScaleDesc viewScaleDesc, ref LayerHeader layer)
{
fixed (ViewScaleDesc* descRef = ((ViewScaleDesc*)viewScaleDesc))
{
fixed (LayerHeader* headerRef = ((LayerHeader*)layer))
{
IntPtr layerListPtr = new IntPtr((void*)headerRef);
return (Environment.Is64BitProcess ?
ovrHmd_SubmitFrame64(
base.NativePointer, frameIndex,
new IntPtr((void*)descRef), ref layerListPtr, 1) :
ovrHmd_SubmitFrame32(base.NativePointer, frameIndex,
new IntPtr((void*)descRef),
ref layerListPtr, 1));// get_NativePointer()
}
}
}
是反射器给出的代码不正确还是我做错了什么?
只是放下演员表。 &viewScaleDesc
会起作用。
我对 C# 的不安全方面有点陌生,所以如果我在这里遗漏了一些明显的东西,请原谅我。
我正在查看一些使用 .NET Reflector 的代码,以了解 Oculus Rift 在 C# 中的一些实现,但我遇到了一堆错误,例如:
Error CS0030 Cannot convert type 'OVR.ViewScaleDesc' to 'OVR.ViewScaleDesc*'
Error CS0030 Cannot convert type 'OVR.LayerHeader' to 'OVR.LayerHeader*'
在下面的方法中
public unsafe Result SubmitFrame(
uint frameIndex, ref ViewScaleDesc viewScaleDesc, ref LayerHeader layer)
{
fixed (ViewScaleDesc* descRef = ((ViewScaleDesc*)viewScaleDesc))
{
fixed (LayerHeader* headerRef = ((LayerHeader*)layer))
{
IntPtr layerListPtr = new IntPtr((void*)headerRef);
return (Environment.Is64BitProcess ?
ovrHmd_SubmitFrame64(
base.NativePointer, frameIndex,
new IntPtr((void*)descRef), ref layerListPtr, 1) :
ovrHmd_SubmitFrame32(base.NativePointer, frameIndex,
new IntPtr((void*)descRef),
ref layerListPtr, 1));// get_NativePointer()
}
}
}
是反射器给出的代码不正确还是我做错了什么?
只是放下演员表。 &viewScaleDesc
会起作用。