Csharp/C#教程:是否有最佳实践来访问C ++本地COM函数以从C#进行互操作?分享


是否有最佳实践来访问C ++本地COM函数以从C#进行互操作?

是否有最佳实践来访问C ++本地COM函数以从C#进行互操作?

例如,如果我有100个C ++方法(基本上是本机库),它与核心窗口组件交互。

我想基本上在C#中为这些C ++方法创建一个包装器,所以我所有新雇用的员工都可以使用它而不是C ++等.C ++代码是遗留的并且让我感到害怕,所以我只想处理它一次。 这里的方法是否为每个方法都有一个相应的C#方法? 事实上,还有另一种方法吗?

我可以使用某种包装子系统吗? 你们这些人一般都这样做吗?

此外,是否有任何性能考虑等?

如果您的C ++方法在COM对象中,那么您可以使用C#中的COM interop。 有关详细介绍,请参阅CLR Inside Out:COM Interop简介。

如果这些C ++方法更像传统的API调用,那么您将需要使用Platform Invoke(即PInvoke)。 这需要在C#中为非托管(C ++函数)创建托管原型。 一个好的起点是Platform Invoke Tutorial 。

就性能考虑而言,通常不会有太多担心。 从C#调用可能比直接从C ++调用要慢一些,这在很大程度上是由于封送数据。 除非您正在调用的代码处于关键循环中,否则您不会注意到任何差异。

这实际上取决于这些本机function的作用。 您在非托管和托管世界之间共享数据的次数越多,流程就越难。 如果没有关于您的特定function的更多信息,很难说您可能遇到问题的位置。

使用COM Interop来包装库。 然后,您可以或多或少地将C ++代码视为可以以正常方式调用的.NET本机代码。

上述就是C#学习教程:是否有最佳实践来访问C ++本地COM函数以从C#进行互操作?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/998361.html

(0)
上一篇 2021年12月27日
下一篇 2021年12月27日

精彩推荐