1

我在 C++/MFC 中实现了一个名为 GDAL 的库,该项目还实现了 gdiplus 用于绘制位图。

简而言之:我将所有内容封装在一个类中,该类接受一些 int、string 和其他非常常见的类型,并返回其中一些类型以及一些 gdiplus::Bitmap。所有这些都很好地打包在 .dll 和 .lib 中。

所以现在我想在 C# 项目中使用这个库来使用表单的所有功能。

我在整个互联网上搜索了答案,但在教程和其他有用的文档中找不到任何非常具体的内容。

但是有一个解决方案引起了我的注意,但描述得不是很好,它是 c++/clr 包装器。我创建了一个 C# finnely 接受作为参考的对象,但它不允许我实例化该类,也不能通过智能查看名称空间或任何相关的内容。

如果有人可以帮助我走这条路,或者给我一个类似的好东西,我将不胜感激。

4

1 回答 1

1

您不能在 C# 项目中使用 C++ 类。

你有两个选择。

第一种方法是在 VC++ 中创建一个托管包装器,该包装器将创建一个托管类,该类访问非托管类并聚合对类上各种属性/方法的调用。

请参阅本文了解如何执行此操作

一旦你有了包装器,你就可以设置一个引用,然后从 C# 中使用你的类。

第二种方法是将 MFC 对象包装在 COM 对象中。你必须定义你的接口,然后创建类工厂,然后实例化对象......它更“面向对象”,但工作量很大,请参阅教程

于 2012-04-18T15:55:41.753 回答