c++ - 与普通 DLL 相比,使用 COM 有什么优势?

标签 c++ com

假设您只在 C++ 世界中工作(不需要跨语言互操作)。您认为使用 COM 而不是普通的基本 DLL 有哪些优势/不便?如果您不打算使用来自不同语言的界面,您认为使用 COM 值得吗?

最佳答案

每个人都在提到 COM 的加号列中的内容。我会提到几个缺点。

  • 当您使用 COM 实现您的系统时,您需要在安装时注册 COM“服务器”(无论是进程内还是进程外),并在卸载时注销它们。这可能会稍微增加设置系统的复杂性,并且往往需要重新启动,除非用户先小心地拆除正在运行的进程。

  • 与做同样事情的其他标准方法相比,COM 速度较慢。此评论可能会引起很多仇恨,也可能会产生一些反对票,但事实是,在某些时候您将需要整理数据,而这是昂贵的。

  • 根据 COM 规则,接口(interface)一旦发布就永远无法更改。这本身并不是消极的,你甚至可能会争辩说它迫使你在发布界面之前进行彻底的设计。但事实是没有永远不会这样的事情,而且在生产代码中接口(interface)会发生变化。您无疑需要添加方法或更改现有方法的签名。为了实现这一点,您必须要么打破 COM 的规则——这会产生不良影响——要么遵循 COM 的规则,这些规则比直接向函数添加参数更复杂,就像使用直接的 DLL 一样。

关于c++ - 与普通 DLL 相比,使用 COM 有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986972/

相关文章:

c++ - std::move() 是否会使迭代器无效?

C# 从 COM 对象获取 progID

com - C# Visual Studio : How to have multiple developers on a solution that references Office?

c++ - 使用 VS Community 2017 打开 vdproj 文件?

c++ - 为什么这个 C++ vector 使用这么多 RAM?

c++ - 从任务栏隐藏控制台 C++ 程序

c++ - 如何在 cmake 中要求没有二进制文件的仅 header 库?

c++ - 具有双向接口(interface)的基于 DLL 的应用程序框架 (Windows)

c++ - 应用程序之间的通信

c++ - IGraphBuilder::RenderFile() 因 VFW_E_BAD_KEY 失败 - 0x800403f2