WINDOWS下DLL的链接库与静态库LIB有何异同?

解决方案 »

  1.   

    主要区别:
    LIB的代码在链接的时候就和EXE文件链接到一起了,以后EXE运行的时候可以独立运行,而不需要LIB的支持
    DLL的代码在链接的时候不会链接到EXE中,所以EXE运行的时候需要DLL的支持。
      

  2.   

    dll的lib,我感觉就是在exe中,起到dll的头文件的作用
      

  3.   

    我知道DLL与静态LIB的区别,我想知道用DLL时链接的LIB与静态LIB的区别。
      

  4.   

    静态链接时DLL的LIB起的作用是在主程序编译的时候帮助链接器找到DLL中的对应函数。
    这种DLL调用方式在我看来和静态LIB没有多少区别。因为这样生成的Exe不能真的动态调用DLL中的导出函数,如果你的DLL后来更新了,则主程序也要重新编译,否则不能保证主程序能找到新DLL中的导出函数。
      

  5.   


    1 dll是代码的实现, 它采用动态链接方式.
    2 lib有两种方式: 
      (1) 一种有实现代码, 这样它是采用静态连接.
      (2)还有一种方式, 它是提供给dll中的一些连接信息(如函数地址). 这样应用
       模块最终需要动态链接对应的dll库.
      

  6.   

    LIB只是DLL的映射方式,表明DLL的函数入口点
    我是这样理解的
      

  7.   

    dll的引入库lib里面只是一些函数的信息,比如入口地址等等,实际上根本没有执行代码。所以这样生成的exe必须要有相应dll的支持。
      

  8.   

    <<programming windows>>
      

  9.   

    仅仅知道导出函数的名称并不足以从DLL中导出该函数。若在应用程序中使用显式链接(link explicitly),至少还应该知道导出函数的返回值的类型以及所传递给导出函数的参数的个数、顺序和类型;若使用隐含链接(link implicitly),必须有包括导出函数(或类)的定义的头文件(.H文件)和引入库(import library,.LIB文件),这些文件是由DLL的创建者所提供的
      

  10.   

    在VC98(VC6.0)目录下有LIB,CRT目录,LIB下有LIB文件,是所谓的静态链接库,CRT目录下为源码和一些OBJ文件(在子目录中),请问C运行库,C标准库(或C++标准库)跟这两个目录下的文件是什么关系?根据目录名好象C运行库的文件在CRT目录下,那C标准库(或C++标准库)的源码又在哪个地方?敬请指教。LIB目录下的lib文件和CRT\SRC下的OBJ文件又是干嘛的?
      

  11.   

    我也正受此问题困扰!
    我以为动态连接库只能采用动态连接的方式,静态连接库则采用静态连接的方式连接!
    可是做一应用程序,可以选择use MFC in share DLL,和use MFC in static Library 的方式,难道说mfc有静态连接库和动态连接库两个版本吗?