结构编组场失败在Linux

问题描述 投票:-1回答:2

我用下面的结构数据与PInvoke的封送

[StructLayout(LayoutKind.Sequential)]
struct Data
{
  int id;
  IntPtr state;
  object obj;
}

和所有适用于Windows罚款,但在Linux上,我发现了错误:

不能类型“数据”的编组场“OBJ”:无效管理/(不支持封送向和从COM接口指针)非托管类型组合。

为什么?是否有可能禁用编组为特定的领域?

.net-core pinvoke marshalling
2个回答
0
投票

object obj;属性无效

您可以尝试IntPtr obj;

什么是obj的实际类型?


0
投票

挖CLR来源,我发现这个问题确实是Linux特有的,并且连接到COM互操作功能,这是Windows的唯一。

所以我固定使用的IntPtr为OBJ(如@Simonare建议)的GCHandle问题和。

© www.soinside.com 2019 - 2024. All rights reserved.