在P / Invoke& amp;中是否有用于编组的匹配类型的表格。互操作?

时间:2010-08-17 02:21:12

标签: c# .net com interop pinvoke

我几乎被.NET世界和原生世界中不同类型的方言相匹配。比如MFC CList和其他东西。

我非常希望如此:

  • 某种表或cheetsheet,列出了.NET世界和本地世界之间的所有映射。
  • 列出可以编组的所有类型的表。

非常感谢!!

2 个答案:

答案 0 :(得分:2)

有关默认类型转换的信息,请尝试this chart输出。

有关Marhsaling的一般信息,请查看this page

答案 1 :(得分:2)

UnmanagedType枚举提供了您想要的完整的目标类型列表。它涵盖了C atleast中可用的所有核心类型。对于C中的用户定义类型,您需要检查它们是否是标准类型的typedef,或者在结构的情况下,您需要在C#中重写结构并手动编组它的每个字段。

这里不涉及C ++类(如MFC)。 P / Invoke不支持__thiscall调用约定(即类方法)。将C ++代码导入C#的常见方案是使用C ++ / CLI为类编写COM包装器,或者从C ++编写基于C的包装器(标记代码extern“C”),然后在包装器上使用P / Invoke