我用下面的结构数据与PInvoke的封送
[StructLayout(LayoutKind.Sequential)]
struct Data
{
int id;
IntPtr state;
object obj;
}
和所有适用于Windows罚款,但在Linux上,我发现了错误:
不能类型“数据”的编组场“OBJ”:无效管理/(不支持封送向和从COM接口指针)非托管类型组合。
为什么?是否有可能禁用编组为特定的领域?
object obj;
属性无效
您可以尝试IntPtr obj;
什么是obj
的实际类型?
挖CLR来源,我发现这个问题确实是Linux特有的,并且连接到COM互操作功能,这是Windows的唯一。
所以我固定使用的IntPtr为OBJ(如@Simonare建议)的GCHandle问题和。