如何将C#类对象传递给c ++非托管代码?

时间:2016-11-07 10:02:06

标签: c# c++ .net marshalling

我在c#代码中有一个对象定义如下:

class CSObject
{
  int length;
  int width;
  IList<SubItem> Items;
  bool OnSale;     
  ItemType type; //ItemType is an enum
}

Class SubItem
{
    object AssociatedValue;
    List< Range > Highlight; // Range is another class represents a pair (0, 4)
    string Name;
    IList<SubItem> Items;
    string Title;

}

现在我们如何将它传递给C ++代码中的方法?

  1. 我是否需要在C ++端创建类似的类并发送此数据并在那里进行derseialize?
  2. 我不需要在C ++端修改对象,只需要遍历它。

1 个答案:

答案 0 :(得分:-2)

我不知道这会对你有所帮助,但我很久以前就用过这样的东西了

  public struct AccountInfo
  {
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    public byte[] ExpirationDate;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 12)]
    public string CustomerId;
  }