COM dll over C++ dll

COM dll over C++ dll

本文关键字:dll C++ over COM      更新时间:2023-10-16

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

我已经浏览了这个链接,它没有很好地回答我的问题。

谢谢!

您发布的链接中的答案(COM与非COM DLL)解决了主要的相关问题。如果是didn't answer my question well,那么你应该考虑更狭义地界定问题。

除了在另一个主题中已经提到的注释之外,还有几条注释。

  • (仅)被其他C++代码使用的C++DLL可以公开完整的C++接口。请参见例如在C++类中使用dllimport和dllexport:You 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++不太友好。请参见"什么是COM接口?"。

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

    相反,COM接口是ABI合约(什么是应用程序二进制接口(ABI)?)与客户端代码的耦合要松散得多。本质上,只要发布的接口不更改,DLL代码就可以随意更改,而无需重新编译客户端。

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