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

时间:2015-03-06 22:05:09

标签: c++ .net pinvoke marshalling

我们有一个win32 C ++非托管库(调用Boost和openCV)。 该库包含几个公共类定义。 这些类本身暴露了几种方法,这些方法的参数包括向量,共享指针 和回调作为其方法签名的一部分。

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

这样做的最佳方法是什么?

有人能指出我的方向,任何示例实现,教程,策略,让我们开始? 我最后一次看到这样的事情是在十多年前。 我似乎依稀记得pInvoke和IJW的作品。

非常感谢任何想法。

谢谢, JohnB

1 个答案:

答案 0 :(得分:2)

我会创建一个包含原生C ++的托管C ++。 将本机C ++编译为静态库,创建引用静态C ++库的托管C ++ DLL并编写包装器代码。我已经完成了几次而且非常简单。

查看此示例:http://www.codeproject.com/Articles/19354/Quick-C-CLI-Learn-C-CLI-in-less-than-minutes#A8