C# 中的非托管 C++ 类
Posted
技术标签:
【中文标题】C# 中的非托管 C++ 类【英文标题】:Unmanaged C++ class in C# 【发布时间】:2010-12-06 13:53:20 【问题描述】:我能否从 C# 代码实例化和“使用”非托管 C++ 类(例如,使用 DllImport 等)?
【问题讨论】:
【参考方案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# 中覆盖的虚拟方法。
【讨论】:
以上是关于C# 中的非托管 C++ 类的主要内容,如果未能解决你的问题,请参考以下文章