【问题标题】:What is the best way to create a COM component today?今天创建 COM 组件的最佳方法是什么?
【发布时间】:2012-09-03 08:39:47
【问题描述】:

我想为我的宠物项目创建一个桌带 COM 对象。我对 COM 没有任何经验,快速搜索发现 ATL 会简化事情。我想知道今天是否有更好的方法来创建 COM 组件。在某种意义上更好地减少样板,使用 C# 而不是 C++ 以及您可能想到的任何其他东西。

【问题讨论】:

    标签: c# c++ visual-c++ com atl


    【解决方案1】:

    如果在客户端计算机上部署或依赖 .NET 框架安装对您来说不是问题,那么 C# 比 C++ 容易得多(尽管您可能必须在 C# 中重新声明接口、IID 等...使用P/Invoke)。如果减少依赖是一个问题,那么带有 ATL 的 C++ 会更好。

    【讨论】:

      【解决方案2】:

      只需在 C# 中创建它并作为 COM 组件公开,请参阅本指南:

      http://msdn.microsoft.com/en-us/library/zsfww439.aspx

      【讨论】:

        【解决方案3】:

        我会考虑 C++/ATL 的唯一原因是如果我要连接到任何 C/C++ 库。除了我想不出在 C# 上使用 C++ 的充分理由(假设你的技能水平在两者上是相当的)。

        【讨论】:

        • 当 .NET 最初风靡一时时,Microsoft 提倡将其用于包括 Shell 扩展等在内的所有内容。他们不再这样做,并推荐用于 shell 扩展等的本机代码。我猜这家伙的桌带对象与他可能不想使用 .NET 的 shell 扩展足够接近。在这种情况下,ATL 可能是使用本机代码编写的最佳方式。
        • @JoeWillcoxson 我同意,这就是我开始使用 C++ 的原因。如果您没有发表评论,我本可以接受这个作为答案。
        【解决方案4】:

        我只能推荐 C++ 与微软的 ATL 库结合使用。

        我使用了一些用 C++ 编写的代码生成工具,帮助我摆脱了很多样板代码。该工具生成的代码生成了更 C++ 友好的接口(例如,当您在 Visual Studio 中#import 类型库时,在 tlh/tli 文件中生成的代码。我的代码生成器生成类似的代码,仅适用于 COM 服务器。

        如果您有兴趣,请通过 web dot de 向 DerTopper 发送邮件。在主题行中添加“COM 代码生成器”之类的内容,这样您就不会通过我的垃圾邮件过滤器。

        问候, 斯图尔特

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-25
          • 1970-01-01
          • 1970-01-01
          • 2017-08-06
          • 2012-01-13
          • 1970-01-01
          • 2022-01-05
          • 2017-04-13
          相关资源
          最近更新 更多