Я немного новичок в небезопасной стороне C#, так что простите меня, если я пропущу что-то очевидное здесь.Не указывать указатель на тип указателя в фиксированном выражении
Я ищу через некоторый код, используя .NET Reflector, чтобы понять некоторые реализации реализации Oculus Rift в C#, но я получаю кучу ошибок, таких, как это:
CS0030 Ошибка Не удается преобразовать типа 'OVR.ViewScaleDesc' до 'OVR.ViewScaleDesc *
CS0030 Ошибка Невозможно преобразовать тип 'OVR.LayerHeader' до' 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' и' LayerHeader'? –
Я не уверен, если это так, но обратите внимание, что нет никакого слова, если исходный код был C# в первую очередь - вполне возможно, что он не имеет эквивалента C#. Обычно вы используете '&' для получения указателя на структуру, но я не уверен, что это работает с аргументом 'ref'. – Luaan
@ Luaan Он работает с аргументом ref, если тип является 'struct'. В противном случае он не может получить управляемый указатель на класс C#. –