从C++/CLI包装返回指向非托管类的指针,该类可以导入C#

Returning pointer to unmanaged class from C++/CLI wrapper which can be imported into C#

本文关键字:指针 导入 CLI C++ 包装 返回      更新时间:2023-10-16

我有一个C++类,需要在C#应用程序中创建几个实例。显然,这意味着我需要制作一个C++/CLI包装器,因为你不能将C++类导入C#,但我以前从未使用过它。C++类继承自一个基类,该基类只包含几个纯虚拟函数,没有数据。DLL只导出一个函数,该函数创建类的新实例并返回基类的指针。

什么样的C++/CLI类型可以用来调用该函数并获得指向C++类的指针,但也可以导入C#?

谢谢。

您不需要任何特殊的"C++/CLI类型",您应该能够像从普通C++一样调用该函数。但是,如果您想使用C#中的C++类,您确实需要编写能够从C#中使用的C++/CLI托管包装器类。

托管包装类将包含一个具有指向非托管类的指针的文件。它还将包含与非托管类相同的成员,这些成员将转发到它们的非托管等价类。

有关如何执行此操作的示例,请参阅MSDN上的如何:包装本机类以供C#使用