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++ Classes: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++不太友好。例如参见 [=18=] .
与上一点相关,DLL C++ 接口非常与使用它的任何 C++ 代码紧密耦合。除了极少数例外,这意味着 DLL 和客户端代码都需要使用相同的编译器和相同的版本进行编译。此外,每当 DLL 导出 类 更改(包括 private
更改)时,可能需要重新编译所有客户端代码。
相比之下,COM 接口是一种 ABI 契约 (What is Application Binary Interface (ABI)?),与客户端代码的耦合要松散得多。本质上,只要发布的接口不变,DLL代码可以随意改变,不需要客户端重新编译。
就性能而言,如果没有 很多 更具体的细节,进行比较还为时过早,并且不可能进行二次猜测。 C++
与 COM
接口具有截然不同的语义和功能。
如果我需要构建一个 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++ Classes:
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++不太友好。例如参见 [=18=] .与上一点相关,DLL C++ 接口非常与使用它的任何 C++ 代码紧密耦合。除了极少数例外,这意味着 DLL 和客户端代码都需要使用相同的编译器和相同的版本进行编译。此外,每当 DLL 导出 类 更改(包括
private
更改)时,可能需要重新编译所有客户端代码。相比之下,COM 接口是一种 ABI 契约 (What is Application Binary Interface (ABI)?),与客户端代码的耦合要松散得多。本质上,只要发布的接口不变,DLL代码可以随意改变,不需要客户端重新编译。
就性能而言,如果没有 很多 更具体的细节,进行比较还为时过早,并且不可能进行二次猜测。 C++
与 COM
接口具有截然不同的语义和功能。