C#编组结构指针有什么区别?

C#编组结构指针有什么区别?,第1张

概述好的,这是有效的: [StructLayout(LayoutKind.Explicit, Size = 28)]public unsafe struct HandleProxy{ [FieldOffset(0), MarshalAs(UnmanagedType.I4)] public JSValueType _ValueType; // JSValueType is an en 好的,这是有效的:
[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#编组结构指针有什么区别?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1247516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存