包装非托管 C++ 类 以便 .Net 托管客户端应用程序可以使用它们的最佳方法是什么?

What is the best way to wrap unmanaged C++ classes so they can be consumed by .Net managed client applications?

我们有一个 win32 C++ 非托管库(它在幕后调用了 Boost 和 openCV)。 该库包含多个 public class 定义。 classes 本身公开了几个方法,其参数包括向量、共享指针 和回调作为其方法签名的一部分。

我们想创建一个包装器,允许这些 classes 被 .Net(托管)客户端使用。 我们希望保留对现有非托管客户端应用程序的支持。所以我想这必须是 一个单独的DLL/library。另一个考虑因素是跨 managed/unmanaged 的性能编组 边界。我们将在客户端应用程序和库之间来回推送图像的字节数组 每秒30-50次的速度。

执行此操作的最佳方法是什么?

有人可以指出任何示例实施、教程和策略的方向来帮助我们入门吗? 我上一次看到这样的东西已经是 10 多年前的事了。 我似乎依稀记得 pInvoke 和 IJW 的作品。

如有任何想法,我们将不胜感激。

谢谢, 约翰B

我会创建一个围绕您的本机 C++ 的托管 C++。 将本机 C++ 编译成静态库,创建引用静态 C++ 库的托管 C++ DLL 并编写包装器代码。我已经做过几次了,非常简单。

看看这个例子:http://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-minutes#A8