2

使用 C# 和 C++/CLI 开始互操作的最佳在线指南/教程是什么?我正在寻找将 C# 制作的结构传递给 C++/CLI 的良好指南。我看到的许多教程都没有涉及将 C# 中制作的自定义结构传递给 C++/CLI。有什么建议么 ?

谢谢。

4

1 回答 1

9

你找不到很多教程的原因是它真的什么都没有。您将托管结构从 C# 传递到 C++/CLI,就像传递给另一个 C# 类/方法一样

假设你在 C# 中有结构:

public struct TheStruct
{
  public int i;
  public String str;
}

您将在 C++/CLI 中编写如下所示的方法:

// *.h
void PassStruct(TheStruct ^myStruct); 


// *.cpp
void classnamegoeshere::PassStruct(TheStruct ^myStruct)
{
   int j = myStrict->i;
   String ^localStr = myStruct->str;
}

所以,有几点注意...

  1. 您需要确保将 using 语句放在 C++/CLI 代码中以获取 C# 参考
  2. 在 C++/CLI 参考列表中包含 C# 程序集(定义结构)
  3. 托管对象始终使用 ^ 指针表示法(与 * 相比)
  4. 要使用方法或成员,请使用标准指针表示法 ( -> )
  5. 您需要注意不要创建循环引用,因此您可能希望在 C++/CLI 中定义 TheStruct,在这种情况下,它看起来像:

    公共参考结构 TheStruct { public: int i; 字符串 ^str; }

容易吗?

于 2013-01-31T21:14:20.380 回答