将C#结构传递给C++/CLI

rob*_*986 2 c# c++ interop c++-cli

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

谢谢.

Dav*_*ope 8

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

说你在C#中有结构:

public struct TheStruct
{
  public int i;
  public String str;
}
Run Code Online (Sandbox Code Playgroud)

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

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


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

所以,有几个笔记......

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

    public ref struct TheStruct {public:int i; String ^ str; }

容易想到吗?