【问题标题】:Unmanaged C++ class in C#C# 中的非托管 C++ 类
【发布时间】:2010-12-06 13:53:20
【问题描述】:

我能否从 C# 代码实例化和“使用”非托管 C++ 类(例如,使用 DllImport 等)?

【问题讨论】:

    标签: c# c++ unmanaged managed


    【解决方案1】:

    在 Windows 上,您可以使用 COM interop 来使用 C++。但是,这不适用于 Linux/Mac OS X。

    另一种选择是在 C++ 类周围公开一个 C 包装器(C++ 中的外部“C”)。这是必要的,因为 DllImport 需要一个 C ABI。

    编辑:第三种选择是C++/CLI,即为 .Net 编译 C++ 代码。这也是一个仅限 Windows 的解决方案。

    【讨论】:

      【解决方案2】:

      您也可以使用 SWIG。它适用于 Linux 和 Mac 上的 Mono。

      它生成一组暴露 C++ 类的 C 函数,并生成一个用 DllImport 调用它们的 C# 类。

      它允许在 C# 中继承 C++ 类,并且使用 Director 功能 C++ 代码可以回调 C# 中覆盖的虚拟方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-23
        • 2011-04-29
        • 2012-07-20
        • 2011-07-12
        • 2013-01-07
        相关资源
        最近更新 更多