linux 上的结构字段编组失败
struct field marshaling failed on linux
我正在使用以下结构与 PInvoke 进行数据编组
[StructLayout(LayoutKind.Sequential)]
struct Data
{
int id;
IntPtr state;
object obj;
}
在 Windows 上一切正常,但在 Linux 上我收到错误:
Cannot marshal field 'obj' of type 'Data': Invalid managed/unmanaged type combination (Marshaling to and from COM interface pointers isn't supported).
为什么?
是否可以禁用特定字段的封送处理?
object obj;
属性 无效
你可以试试IntPtr obj;
obj
的实际类型是什么?
挖掘 CLR 资源我发现这个问题确实是 Linux 特定的,并且与 COM 互操作功能相关,该功能仅 windows。
所以我已经解决了使用 IntPtr for obj(正如@Simonare 建议的那样)和 GCHandle 的问题。
我正在使用以下结构与 PInvoke 进行数据编组
[StructLayout(LayoutKind.Sequential)]
struct Data
{
int id;
IntPtr state;
object obj;
}
在 Windows 上一切正常,但在 Linux 上我收到错误:
Cannot marshal field 'obj' of type 'Data': Invalid managed/unmanaged type combination (Marshaling to and from COM interface pointers isn't supported).
为什么? 是否可以禁用特定字段的封送处理?
object obj;
属性 无效
你可以试试IntPtr obj;
obj
的实际类型是什么?
挖掘 CLR 资源我发现这个问题确实是 Linux 特定的,并且与 COM 互操作功能相关,该功能仅 windows。
所以我已经解决了使用 IntPtr for obj(正如@Simonare 建议的那样)和 GCHandle 的问题。