我试图了解从非托管 C++ 调用 C# 库实现的选项。
我的顶级模块是一个非托管 C++ COM/ATL dll。我想集成现有托管 C# dll 的功能。我有,并且可以重新编译这两个库的源代码。
我从阅读MSDN 上的这篇概述之类的文章和这个 SO 问题中了解到,有可能创建一个“混合模式”dll,它允许本机 C++ 代码调用 C# 库。
我对这种方法有几个问题:
- 我该如何设置呢?我可以简单地更改现有 COM/ATL 项目的一些属性以允许使用 C# 模块吗?
- 这些混合模式调用与 COM 互操作调用的性能有何不同?是否有一种通用的字符串格式可用于防止模块之间的转换或深度复制?
- 如果这个 dll 是在混合模式下创建的,它的 COM 客户端是否仍然可以以相同的方式接口/使用它,或者它们是否需要了解混合模式?
- 加载此 COM 对象时,包含 CLR 是否会产生大量开销?
我是 Windows 开发的新手,所以如果问题陈述中的任何内容需要澄清或更正,请发表评论。
提前致谢。