2016-07-24 105 views
0

如果我需要建立一个dll 只有由C++ applicaton消耗。 如果我去创建COM DLL,什么是好处或缺点(在性能或任何方面)。COM DLL的C + + dll

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

谢谢!

+0

如果您的DLL只能在一个程序中使用,只是静态链接它。 –

+1

你会发现很容易的缺点。 COM的主要优点是语言和运行时独立性。这听起来不像是一个功能,如果它是用C++编写的并且只能从C++程序中使用。但事实上,C++没有ABI。您可以使用任意C++编译器构建的程序,使用任意编译选项来使用您的DLL。你不会马上得到这个好处,只会在晚些时候。 –

回答

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只能发布接口,这些接口对语言无关紧要,对C++不太友好。见例如What Is a COM Interface?

  • 与上一点相关的DLL C++接口是非常有与任何使用它的C++代码强烈耦合。极少数情况下,这意味着DLL和客户端代码都需要使用相同的编译器和相同版本进行编译。此外,只要DLL导出的类发生更改(包括private更改),潜在的所有客户端代码都需要重新编译。

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

至于性能,这是不成熟的比较,也不可能不很多更多的细节第二猜测。 C++COM接口具有截然不同的语义和功能。