COM dll over C ++ dll

时间:2016-07-24 05:21:58

标签: c++ dll com

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

我已经完成了这个LINK它没有很好地回答我的问题。

谢谢!

1 个答案:

答案 0 :(得分:3)

您发布的链接(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 ++不太友好。请参阅示例What Is a COM Interface?

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

    相比之下,COM接口是ABI合约(What is Application Binary Interface (ABI)?),与客户端代码松散耦合。从本质上讲,只要发布的接口不会发生变化,DLL代码就可以随意更改,而无需客户端重新编译。

就性能而言,如果没有很多更具体的话,比较和不可能进行二次猜测是不成熟的。 C++COM接口具有截然不同的语义和功能。