【发布时间】:2012-09-03 08:39:47
【问题描述】:
我想为我的宠物项目创建一个桌带 COM 对象。我对 COM 没有任何经验,快速搜索发现 ATL 会简化事情。我想知道今天是否有更好的方法来创建 COM 组件。在某种意义上更好地减少样板,使用 C# 而不是 C++ 以及您可能想到的任何其他东西。
【问题讨论】:
标签: c# c++ visual-c++ com atl
我想为我的宠物项目创建一个桌带 COM 对象。我对 COM 没有任何经验,快速搜索发现 ATL 会简化事情。我想知道今天是否有更好的方法来创建 COM 组件。在某种意义上更好地减少样板,使用 C# 而不是 C++ 以及您可能想到的任何其他东西。
【问题讨论】:
标签: c# c++ visual-c++ com atl
如果在客户端计算机上部署或依赖 .NET 框架安装对您来说不是问题,那么 C# 比 C++ 容易得多(尽管您可能必须在 C# 中重新声明接口、IID 等...使用P/Invoke)。如果减少依赖是一个问题,那么带有 ATL 的 C++ 会更好。
【讨论】:
只需在 C# 中创建它并作为 COM 组件公开,请参阅本指南:
【讨论】:
我会考虑 C++/ATL 的唯一原因是如果我要连接到任何 C/C++ 库。除了我想不出在 C# 上使用 C++ 的充分理由(假设你的技能水平在两者上是相当的)。
【讨论】:
我只能推荐 C++ 与微软的 ATL 库结合使用。
我使用了一些用 C++ 编写的代码生成工具,帮助我摆脱了很多样板代码。该工具生成的代码生成了更 C++ 友好的接口(例如,当您在 Visual Studio 中#import 类型库时,在 tlh/tli 文件中生成的代码。我的代码生成器生成类似的代码,仅适用于 COM 服务器。
如果您有兴趣,请通过 web dot de 向 DerTopper 发送邮件。在主题行中添加“COM 代码生成器”之类的内容,这样您就不会通过我的垃圾邮件过滤器。
问候, 斯图尔特
【讨论】: