`

静态库与DLL

阅读更多

静态库与DLL的不同之处

可执行文件的生成(Link期):前者很慢(因为要将库中的所有符号定义Link到EXE文件中),而后者很快(因为后者被Link的引入库文件无符号定义)
可执行文件的大小:前者很大,后者很小(加上DLL的大小就和前者差不多了)
可执行文件的运行速度:前者快(直接在EXE模块的内存中查找符号),后者慢(需要在DLL模块的内存中查找,在另一个模块的内存中查找自然较慢)
可共享性:前者不可共享,也就是说如果两个EXE使用了同一个静态库,那么实际在内存中存在此库的两份拷贝,而后者是可共享的。
可升级性:前者不可升级(因为静态库符号已经编入EXE中,要升级则EXE也需要重新编译),后者可以升级(只要接口不变,DLL即可被升级为不同的实现)
 
综合以上,选择静态库还是DLL
1. 静态库适于稳定的代码,而动态库则适于经常更改代码(当然接口要保持不变),当DLL更改(仅实现部分)后,用户不需要重编工程,只需要使用新的Dll即可。
2. 由于静态库很吃可执行文件的生成(Link期)时间,所以如果对可执行文件的Link时间比较敏感,那么就用DLL。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hjsunj/archive/2008/01/16/2047376.aspx

分享到:
评论

相关推荐

    libtiff库,内含lib静态库与dll动态连接文件

    在C++项目中,可以将`libtiff`作为静态库(`.a`或`.lib`)或动态链接库(`.dll`)来使用。静态库会将`libtiff`的功能编译进最终的可执行文件中,而动态链接库则会在运行时从系统路径加载。`libtiff`的C++接口提供了...

    QtXlsx开源库 编译好的静态库lib和动态库dll

    提供的文件包括静态库(lib)和动态库(dll)。静态库是将库函数链接到目标代码中,使得程序运行时不再需要外部的库文件。动态库则在运行时被加载,减少了程序的大小,但需要对应的dll文件在运行环境中存在。对于...

    c++ 创建dll(动态库)、static lib(静态库),以及dll的相互调用 示例vs2022工程

    c++ 创建dll(动态库)、static lib(静态库),以及dll的相互调用 示例vs2022工程 sln项目文件在 c++_dll_staticLib\libtest\MathTestLib 目录下 以前有小错误,更新了错误(2023-05-28)

    C++ protobuf debug release动态库和静态库

    在Visual Studio 2010或更高版本中,你需要按照以下步骤操作来生成protobuf的动态库(.dll)和静态库(.lib): 1. **安装protobuf**: 首先,你需要下载并安装protobuf的源代码。这通常包括一个.zip或.tar.gz文件,...

    MFC Excel类封装成库DLL(在静态库中使用 MFC)

    本项目是关于如何将MFC与Excel类结合,封装成一个动态链接库(DLL),以便在其他静态库或应用程序中方便地调用Excel功能。 首先,我们需要理解MFC中的类库结构。MFC包含许多预定义的类,如CWinApp、CWnd、CButton等...

    FORTRAN静态库的生成、维护与调用

    ### FORTRAN静态库的生成、维护与调用 #### 一、FORTRAN静态库的生成与维护 FORTRAN静态库是一种特殊的程序集合形式,由编译后的代码块组成,能够独立于主程序存在,并被主程序调用。这类库通常包含一系列子程序,...

    librdkafka 动态库 静态库

    - **静态库**(.lib文件):在编译时与应用程序链接,生成的可执行文件较大,但不依赖外部库,运行更稳定。 4. **VS2015编译**:Visual Studio 2015是微软的IDE,支持C++开发。使用VS2015编译的库适用于Windows...

    openssl编译后的静态库与动态库文件(.dll./lib/.h)

    在这个特定的压缩包文件中,你获得了在Windows 10环境下编译的64位版本的OpenSSL,包含了动态库(dll)、静态库(lib)以及所有相关的头文件(h)。这些组件是开发人员在Windows平台上使用OpenSSL进行程序开发所必需...

    DLLimpLibTool-DLL函数导入静态库生成改名等工具集

    静态库(.lib)文件是与编译器链接时直接嵌入到目标代码中的库,这样程序运行时就不需要DLL文件了。而动态库则是在运行时由操作系统加载的。生成静态导入库(.lib)的主要目的是让编译器知道哪些DLL函数将被程序使用...

    Jsoncpp动态库与静态库

    这是一个已经编译成动态库(dll)和静态库(lib)的Jsoncpp,适用于Windows软件开发的C++开发者。适用于使用Visual Studio开发的人员,库文件编译没有按照C的格式,所以更适合做C++方向的场景使用

    Qt静态库与动态库创建与演示

    本教程将深入探讨如何在Windows XP环境下,利用Qt 4和MinGW编译器创建和使用静态库与动态库。 首先,让我们理解静态库和动态库的基本概念。静态库(.lib文件)是将库函数编译到目标代码中,形成一个完整的可执行...

    VS2017 64位 VTK-8.2.0编译生成库 静态库 动态库 lib文件和dll文件

    在标题和描述中提到的是使用Visual Studio 2017(VS2017)64位环境编译的VTK-8.2.0版本,该版本包含了静态库和动态库,以及所需的lib文件和dll文件。 首先,我们要理解编译环境的重要性。VS2017是微软提供的一个...

    VS2008静态库和动态库的创建和调用

    VS2008静态库和动态库的创建和调用 VS2008静态库和动态库的创建和调用是指在VS2008中创建和使用静态库和动态库的过程。静态库是一种编译后生成的库文件,可以被多个工程使用,而动态库则是一种在运行时加载的库文件...

    动态库导出静态库工具(dll2lib.exe)

    在Windows操作系统中,动态库(Dynamic Link Library, DLL)和静态库(Static Library, LIB)是两种不同的链接库类型,它们在程序开发中都扮演着重要角色。动态库是在运行时由操作系统加载到进程内存中,可以被多个...

    opencv-1.1静态库

    标题提到的"opencv-1.1静态库"是针对早期OpenCV 1.1版本的一个特殊构建,通常OpenCV会提供动态库(.dll文件),但在这个情况下,提供了静态库(.lib文件)。 静态库和动态库是两种不同的库文件类型。静态库在编译时...

    DLL 动态库 静态库 编写/调试

    本文将深入探讨DLL和静态库的编写与调试,以及MFC(Microsoft Foundation Classes)库的使用。 首先,让我们了解DLL。DLL(Dynamic Link Library)是一种可重用代码的共享库,它包含了一系列函数和数据,可供多个...

    静态库工具.rar 易语言 动态转静态库

    7. **DLL函数导入静态库生成器**:此工具可能用于生成一个静态库,该库包含了对特定DLL的函数导入,使得用户可以静态链接到这些函数,避免运行时加载DLL的需要。 通过这些工具,开发者可以方便地将易语言的动态库...

    ffmpeg动态库、静态库,64位windows版

    1. **动态库与静态库的区别** - **动态库** (Dynamic Link Library, DLL):在运行时被应用程序加载,多个程序可以共享同一库,节省系统资源。动态库文件通常以`.dll`结尾。 - **静态库** (Static Library):在编译...

    VS2017 32位 VTK-9.0.1编译生成库 静态库 动态库 lib文件和dll文件

    这些库文件分为两种类型:静态库(.lib)和动态库(.dll)。静态库在编译时会被合并到目标程序中,而动态库则在运行时由操作系统加载,可以被多个程序共享,节省内存资源。 `包含include、lib、bin、share四个...

    windows平台curl 64位静态库和动态库

    压缩包内包含两个文件夹curl_静态库和curl_动态库,内容说明如下: curl_静态库下面: bin子目录包含curl.exe及动态库libcurl.dll include子目录包含头文件 lib子目录包含动态库的导入库文件libcurl.lib curl_...

Global site tag (gtag.js) - Google Analytics