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

标签 c# c++ interop c++-cli

<分区>

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

谢谢。

最佳答案

你找不到很多教程的原因是它真的没有任何内容。将托管结构从 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,在这种情况下它会 看起来像:

    公共(public)引用结构 TheStruct { 民众: 诠释我; 字符串^str;

够简单吗?

关于c# - 将 C# 结构传递给 C++/CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14635138/

相关文章:

c# - 找到并切换到 iframe,但在其中找不到 IWebElement

没有 Visual Studio 的 C# 6.0

c# - 使用双向绑定(bind)绑定(bind)静态变量?

c++ - 具有固定纵横比的透视图(1 :1) in OpenGL and Qt5 (QGLWidget)

c++ - NtConnectPort 错误

c# - 带有 void * 的 PInvoke 与带有 IntPtr 的结构

c# - 需要在 .NET 中使用反射调用 COM 组件

C# .Net 4.0 控制台应用程序 - 如何在所有线程完成之前保持事件状态?

c++ - 抽象基类中的静态常量变量

.net - 将 app.config 与互操作控件结合使用