[StructLayout(LayoutKind.Explicit,Size = 28)]public unsafe struct HandleProxy{ [FIEldOffset(0),MarshalAs(UnmanagedType.I4)] public JsValueType _ValueType; // JsValueType is an enum [FIEldOffset(4),MarshalAs(UnmanagedType.I4)] public Int32 _ManagedobjectID; [FIEldOffset(8)] public voID* _NativeEngineProxy; [FIEldOffset(16),MarshalAs(UnmanagedType.I4)] public Int32 _EngineID; [FIEldOffset(20)] public voID* _Handle;}[Dllimport("Proxy")]public static extern voID disposeHandleProxy(HandleProxy* handle);
……这不……
[StructLayout(LayoutKind.Explicit,Size = 20)]public unsafe struct ValueProxy{ [FIEldOffset(0),MarshalAs(UnmanagedType.I4)] public JsValueType _ValueType; // 32-bit type value. [FIEldOffset(4),MarshalAs(UnmanagedType.Bool)] public bool _Boolean; [FIEldOffset(4),MarshalAs(UnmanagedType.I4)] public Int32 _Integer; [FIEldOffset(4)] public double _Number; [FIEldOffset(12)] public voID* _String;}[Dllimport("Proxy")]public static extern voID disposeValueProxy(ValueProxy* valueProxy);
那么,有什么区别?我错过了什么.调用“disposeValueProxy()”会出现以下错误:
“无法封送’参数#1’:指针不能引用封送结构.请改用ByRef.”
(是的,我可以简单地使用IntPtr / voID *代替“ValueProxy *”但这不是我的观点).
对“disposeHandleProxy()”的调用工作正常.
让我们看看是否有人可以解决这个问题. 总结
以上是内存溢出为你收集整理的C#编组结构指针有什么区别?全部内容,希望文章能够帮你解决C#编组结构指针有什么区别?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)