gpt4 book ai didi

c# - 是否有访问 C++ native COM 函数以从 C# 互操作的最佳实践?

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:22 29 4
gpt4 key购买 nike

是否有访问 C++ native COM 函数以从 C# 互操作的最佳实践?

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

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

我可以有某种包装器子系统吗?你们一般是怎么做的?

还有,有没有性能方面的考虑等等?

最佳答案

如果您的 C++ 方法位于 COM 对象中,则可以从 C# 使用 COM 互操作。参见 CLR Inside Out: Introduction to COM Interop以获得良好的介绍。

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

就性能方面的考虑而言,通常没有什么可担心的。从 C# 调用可能比直接从 C++ 调用慢一点,这在很大程度上是由于编码(marshal)处理数据。除非您调用的代码处于关键循环中,否则您不会注意到任何差异。

这实际上取决于那些 native 函数的作用。在非托管世界和托管世界之间共享数据的次数越多,过程就越困难。如果没有关于您的特定功能的更多信息,很难说出您可能会遇到问题的地方。

关于c# - 是否有访问 C++ native COM 函数以从 C# 互操作的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/671837/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com