gpt4 book ai didi

c# - 在 C# 中使用 COM dll

转载 作者:太空狗 更新时间:2023-10-29 20:48:05 26 4
gpt4 key购买 nike

我们有 COM dll,它是用 C++ 编写的,并已被用 vb 6.0 编写的应用程序使用。我公司计划在 .Net 平台上编写更新版本的应用程序。

就性能而言,在C#项目中使用COM dll时,我应该从下面列出的3个选项中选择什么

  1. 只需添加 dll 作为 com 引用
  2. 使用 C++/Cli 编写包装器 dll
  3. 使用 TlbImp.exe 生成包装器 dll

或者还有其他选择吗?
谢谢。

最佳答案

用 C++/CLI 编写包装器并没有那么快,CLR 中的 COM 互操作编码器经过了大量优化。当您添加对 COM 服务器的引用时,它会从您创建的互操作库自动生成机器代码 stub 。 A 做了很多与异常相关的工作,这些工作非常隐蔽且很难自己完成。

它确保失败 HRESULT 正确转换为托管异常,并且托管异常不会泄漏到 COM 服务器代码中。当你这样做时,你的“让它快点”的决心会让你像这样偷工减料。现在你得到了一些快速但不可靠的东西。在非托管代码中获取托管异常非常难以诊断,所有上下文都已消失。

选项 1 和 3 是一回事。两者都生成互操作库,IDE 只需为您运行 Tlbimp 的等效项。

通常的指导在这里适用。先做简单的事情,互操作库非常简单。只有当您可以实际衡量性能问题并且有一个现实的想法时,才考虑做真正困难的事情。我从未见过有人认为 C++/CLI 包装器是必要的。

关于c# - 在 C# 中使用 COM dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4106289/

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