怎么将一个class通过structureToPtr传给IntPtr

该问题来自社区帖: https://bbs.csdn.net/topics/614645267

Marshal.StructureToPtr(_session, _copiedSess, true);.

会一直报错,说不是结构体,或者说是null

MarshalDirectiveException: Type Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid which is passed to unmanaged code must have a StructLayout attribute.
(wrapper other) NNOnnx.NNSession.StructureToPtr(object,intptr,bool)

根据您提供的错误信息,您正在尝试将一个类型为 Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid 的对象转换为非托管代码可以使用的指针。根据错误信息,该类型需要添加 StructLayout 特性才能传递给非托管代码。

您可以尝试在 SafeHandleZeroOrMinusOneIsInvalid 类型上添加 StructLayout 特性,并将其设置为 LayoutKind.Sequential。示例代码如下:

[StructLayout(LayoutKind.Sequential)]
public class SafeHandleZeroOrMinusOneIsInvalid
{
    // Class definition
}

此外,请确保您传递给 StructureToPtr 方法的 _session 对象不为 null。如果该对象为 null,则会抛出 ArgumentNullException 异常。