<分区>
如果我需要构建一个 dll 仅 供 c++ 应用程序使用。 如果我去创建 COM dll,有什么好处或缺点(在性能方面或任何方面)。
我已经完成了这个LINK它没有很好地回答我的问题。
谢谢!
<分区>
如果我需要构建一个 dll 仅 供 c++ 应用程序使用。 如果我去创建 COM dll,有什么好处或缺点(在性能方面或任何方面)。
我已经完成了这个LINK它没有很好地回答我的问题。
谢谢!
最佳答案
您发布的链接 (COM vs non-COM DLL) 中的答案解决了主要的相关问题。如果那个没有很好地回答我的问题
,那么您应该考虑将问题的范围缩小一些。
除了已经在其他主题中触及的那些之外,还有一些注释。
(仅)其他 C++ 代码使用的 C++ DLL 可以公开完整的 C++ 接口(interface)。参见示例 Using dllimport and dllexport in C++ Classes : 您可以使用 dllimport 或 dllexport 属性声明 C++ 类。这些形式暗示整个类被导入或导出。
。
相比之下,COM DLL只能发布COM
接口(interface),语言中立,对C++不太友好。参见示例 What Is a COM Interface? .
与前一点相关,DLL C++ 接口(interface)非常与使用它的任何 C++ 代码紧密耦合。除了极少数异常(exception),这意味着 DLL 和客户端代码都需要使用相同的编译器和相同的版本进行编译。此外,每当 DLL 导出类更改(包括 private
更改)时,可能需要重新编译所有客户端代码。
相比之下,COM 接口(interface)是一个 ABI 契约 (What is Application Binary Interface (ABI)?),与客户端代码的耦合要松散得多。从本质上讲,只要发布的接口(interface)不变,DLL 代码就可以随意更改,而无需客户端重新编译。
就性能而言,如果没有很多更多细节,就进行比较还为时过早,不可能进行二次猜测。 C++
与 COM
接口(interface)具有截然不同的语义和功能。
关于c++ - COM dll 优于 C++ dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549003/