c++ - 从可以导入到 C# 中的 C++/CLI 包装器返回指向非托管类的指针

标签 c++ dll c++-cli

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

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

谢谢。

最佳答案

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

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

有关如何执行此操作的示例,请参阅 How to: Wrap Native Class for Use by C# on MSDN .

关于c++ - 从可以导入到 C# 中的 C++/CLI 包装器返回指向非托管类的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555442/

相关文章:

visual-studio - Visual Studio 将 dll 引用复制到输出文件夹

c++ - 生命游戏阵列边缘表现怪异

php - 如何将适用于 Windows 的 PHP 5.3 扩展编译为 DLL?

c++ - 重新排序成员声明

c++ - 释放 DLL 创建的对象

.net - .NET COM Callable Wrapper 如何生成 IID?

c++ - [Editor(typeof(FolderNameEditor), typeof(UITypeEditor))] 的 C++/CLI 版本是什么?

c++ - 无法将参数 1 从 'cli::interior_ptr<Type>' 转换为 'CvCapture **'

c++ - 在静态初始化期间创建和使用 vector 是否安全?

c++ - Canny 边缘检测器未处理的异常