具有C#整数引用的Marshal结构

时间:2011-09-30 18:43:01

标签: c# c++ reference struct marshalling

您好我正在尝试创建CSP中的以下结构并将其编组到C ++中并维护链接引用。我不确定如何在C#中定义这个结构?在C ++中,结构必须如下所示,并保持const引用。

// C++
struct {
        int   a;       // my value
  const int&  b = a;   // my reference to a
}

有人知道这是否可行?

感谢。

编辑:

这更能代表我想要实现的目标,正如@Hans指出的那样,它不是合法的C ++,但也许有人可以建议更好的路径? system_t在C ++或C#中生成并传递给C ++。我最好的猜测:(如果这是一个好的设计模式)是初始化C ++中system_t构造函数中的所有引用。至于从C#编组,它会变得复杂。

struct system_t
{
  float    sysSampleRate = 112500.0f;            // Sample rate from receivers.
                                                 // Illegal statement @Hans

  struct tvg_t  // tvg_t is passed to tvg processor 
  {
          float    tvgLinearGain;
    const float&   tvgSampleRate = sysSampleRate;   // Get the rate from system.
                                                    // Illegal statement @Hans
  } tvg;   // Nested tvg_t in system_t.

  //... Many other structures and variables ..//
};

我想找到合适的设计模式,而不是放弃这种模式,转而采用扁平结构或将system_t传递给每个模块。

1 个答案:

答案 0 :(得分:1)

这应该有效:

[StructLayout(LayoutKind.Sequential)]
public struct MyCStruct {
  public int a;
  public IntPtr b;
}