gpt4 book ai didi

c# - 同一 COM 库中的 C++ 和 C# 类

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:54 26 4
gpt4 key购买 nike

我在添加新功能时将现有的 C++ COM 库(STL、Boost 和 ATL)重写为 C#。

然而,有几个大型的经过良好测试的 C++ 类我宁愿不重写。

从概念上讲(并且为了向后兼容)它们属于同一个 COM 库,但是我可以在 C++ 和 C# 之间画一条清晰的线,这样所有交互都是通过显式使用 COM 接口(interface)进行的。

在同一个库中包含 C# 组件和 C++ 组件的最佳方法是什么?

最佳答案

最好的方法是编写一个用作包装器的 C# COM 库。您正在编写的新 C# COM 库听起来已经可以满足此目的。

在此 C# 库中,您可以放置​​重写的 C# 代码和 C++ 代码的封装版本。至于如何包装 C++ 代码,您可以在这里做两件不同的事情:

  • 围绕它放置一个瘦包装 C# 类,并将 PInvoke 放入 C++ DLL 中
  • 编写一个 C++/CLI 包装器并以这种方式直接包含您的 C++ 类

第一个允许您继续使用 C# 代码和语法,但在您与 C++ 类的交互方面有些限制(您只能访问 DLL 导出中公开的内容)。

第二个迫使您编写一些相当不愉快的 C++/CLI 包装器代码,但允许您充分利用 C++ 类。

此链接here是为 C++ 库编写 C++/CLI 包装器的非常有用的资源。

关于c# - 同一 COM 库中的 C++ 和 C# 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448557/

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