COM dll 优于 C++ dll

COM dll over C++ dll

如果我需要构建一个 dll 供 c++ 应用程序使用。 如果我去创建 COM dll,有什么好处或缺点(在性能方面或任何方面)。

我已经经历过这个LINK它没有很好地回答我的问题。

谢谢!

您发布的 link 中的答案 (COM vs non-COM DLL) 解决了主要的相关问题。如果是 didn't answer my question well 那么您应该考虑将问题的范围缩小一些。

除了其他主题中已经触及的内容之外,还有一些注释。

  • (仅)其他 C++ 代码使用的 C++ DLL 可以公开完整的 C++ 接口。参见示例 Using dllimport and dllexport in C++ ClassesYou can declare C++ classes with the dllimport or dllexport attribute. These forms imply that the entire class is imported or exported..

    相比之下,一个COM DLL只能发布COM个接口,语言中立,对C++不太友好。例如参见 [​​=18=] .

  • 与上一点相关,DLL C++ 接口非常与使用它的任何 C++ 代码紧密耦合。除了极少数例外,这意味着 DLL 和客户端代码都需要使用相同的编译器和相同的版本进行编译。此外,每当 DLL 导出 类 更改(包括 private 更改)时,可能需要重新编译所有客户端代码。

    相比之下,COM 接口是一种 ABI 契约 (What is Application Binary Interface (ABI)?),与客户端代码的耦合要松散得多。本质上,只要发布的接口不变,DLL代码可以随意改变,不需要客户端重新编译。

就性能而言,如果没有 很多 更具体的细节,进行比较还为时过早,并且不可能进行二次猜测。 C++COM 接口具有截然不同的语义和功能。