当我们使用Visual Studio(VC8或9)创建DLL时,我们会得到一个选项:创建常规DLL。
他们有什么不同?哪一个更值得使用?
using MFC as shared DLL
或者
using MFC as static library
他们有什么不同?哪一个更值得使用?
using MFC as shared DLL
或者
using MFC as static library
静态库是指你从库中使用的代码被包含在可执行文件中。由于这个原因,你不需要将库发送给用户或要求用户在他们的机器上安装库。但是这会增加可执行文件的大小并将你与该库版本绑定在一起,因此如果你只需要更新库,则必须发送一个新的可执行文件。
动态库在需要时(运行时)调用库来执行代码,但它需要用户已经安装它(通常是特定或最低版本)。如果需要,您还可以将所需版本的库与应用程序一起分发。
至于哪个更好,我不知道。我不是Windows C++或MFC程序员,所以我不能说。在我的Linux服务器上,我编写的应用程序通常是服务器端的,因此使用共享库。
这取决于您的应用程序如何使用、分发、更新、MFC库的更改频率,以及它是否普遍可用于用户的PC等因素。
[我想我现在得到了答案]
如果您使用MFC DLL作为动态链接,那么您的代码将需要Microsoft Foundation Library DLL(特别是您的代码所需的版本)与您的应用程序或dll一起安装在用户端。这意味着您的安装包将包含以下内容:
这使得安装包大小变得更大,同时让用户下载您的安装设置需要更长的时间。
如果您链接到MFC作为静态库,即使用户端没有MFC DLLs,您的代码也能正常工作。原因很简单,您在代码中引用的所有MFC库都将链接到您的应用程序或dll中。这意味着在您的应用程序/ dll中使用的那些MFC库将成为您二进制代码的一部分;然而,您的应用程序/ dll会稍微变大。