【问题标题】:Problem in accessing members of class in C# DLL from C++ project从 C++ 项目访问 C# DLL 中的类成员的问题
【发布时间】:2010-12-23 20:02:37
【问题描述】:

我已将 C# DLL 作为 mentioned at MS support 添加到 C++ 项目中,但是我无法在类中访问其变量和方法。它还说它是一个结构而不是一个类,我不知道它是否重要,但我想我也应该提到它。每当我写。或 -> 或 :: 在对象之后,什么都没有出现。但它只出现在类的名称中,尽管它们不是静态的。

【问题讨论】:

  • 一些显示问题的最小代码怎么样?
  • 目前尚不清楚问题是否实际上与访问 dll 中编码的 C# 方法有关,或者“只是”Intellisense 无法识别这些方法......而且,如果它是托管 C++/CLI 或非托管C++...

标签: c# c++ visual-studio com dll


【解决方案1】:

从 Visual Studio 2005 开始,您可以使用 C++/CLI,这是 Microsoft 的 ECMA 批准的 C++ 方言,它允许同时使用托管和非托管代码。在 VS2005 中,有“Managed Extensions for C++”,你可以实现大致相同的效果,但是你必须使用看起来很可怕的语法来编写 C++ 中的托管代码(有很多双下划线)。

使用 C++/CLI,您可以在项目中混合托管和非托管代码,并直接使用 C# 类型。恕我直言,这比使用 COM 容易得多。

【讨论】:

    【解决方案2】:

    为了提高兼容性,我不会从我的 DLL(C# 或 C++)中导出类。相反,我公开了类的函数,但每个函数的第一个参数是指向类本身的指针。您是否还需要公开一个:void* CreateMyClassInstance() 和一个:DestroyMyClassInstance(void* pInstance)。

    【讨论】:

      【解决方案3】:

      阅读下面链接中发布的文章

      http://www.codeproject.com/KB/cs/InterOp.aspx

      我想这对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多