那位大侠给讲一下DLL和DLL的import库LIB文件有什么关系?
    LIB文件里装的都是什么东西?

解决方案 »

  1.   

    LIB的东西将会放到EXE文件中
    DLL则不会。
      

  2.   

    dll是可执行文件的一种格式,是由exe文件来加载并执行的
    lib只是一种二进制文件,记录的是dll中所导出的函数的信息,用于当你在应用中使用静态加载dll库时(即不通过LoadLibrary和GetProcAddress来加载并使用函数),连接器能够定位使用了该lib库所对应的dll中的相应函数,如果连接器无法定位,则连接器就会报错
      

  3.   

    动态链接库(DLL)由可执行模块组成,为进程提供数据、代码和资源。编译时使用的静态链接库不同的是,动态链接库独立于激活它们的可执行文件,调用的地址转换是在加载 时解决的。这使DLL的故障查找和小的修改比较简单,不必重新编译调用它们的可执行模块。
     
    Visual Studio提供AppWizard生成MFC DLL。给出名字和目录信息后,AppWizard还要求一个关键信息:DLL类型。可选的类型包括:MFC DLL静态链接的常规DLL(Regular DLL with MFC statically linked),使用共享MFC DLL的常规DLL(Regular DLL using shared MFC DLL)和MFC扩充DLL(MFC Extension DLL(using shared MFC DLL))。因此,常把MFC DLL基本上分成两个类型: 
    .常规DLL 可能包含MFC类,但导出不使用MFC派生类的函数。常规DLL可以链接MFC和C运行时间静态库或动态库。 
    .MFC扩充DLL 包含从MFC类派生的可公共访问的类的DLL,被称为AFX扩充DLL或AFX DLL。AFC DLL是唯一可发布MFC派生类供其它DLL或可执行模块用的DLL。扩充DLL以及使用它们的模块需要与MFC库的DLL版本链接,实际上,也要求与C运行库的DLL版本链接。扩充DLL通过与MFC库的DLL版本的链接,可以导出窗口类、消息映射和动态(可串行化的)对象。 
    一、开发和使用DLL需注意三种文件 
    1、 DLL头文件(.H) 
    它是指DLL中说明输出的类或符号(Symbols)原型或数据结构的.H文件。当其它应用程序调用DLL时,需要将该文件包含入应用程序的源文件中。 
    2、 DLL的引入库文件(.LIB) 
    它是DLL在编译、链接成功后生成的文件。主要作用是当其它应用程序调用DLL时,需要将该文件引入应用程序。否则,DLL无法引入。 
    3、 DLL文件(.DLL) 
    它是应用程序调用DLL运行时,真正的可执行文件。DLL应用在编译、链接成功后,.DLL文件即存在。开发成功后的应用程序在发布时,只需要有.EXE文件和.DLL文件,不必有.LIB文件和DLL头文件。 
      

  4.   

    lib在静态连接时使用,形象一点,可以看成一种"头文件".相应的dll可以看成"实现文件(二进制级别)".如果动态连接时不需要lib.
      

  5.   

    Earthdog(没有女朋友,郁闷!) ( ) 信誉:100  2003-11-26 21:05:00  得分:0 
     wqs6(竹山)讲的已经挺清楚了
      

  6.   

    不好意思了 各位 这两天忙 才来结帖  谢谢各位了!
    谢谢
      Earthdog(没有女朋友,郁闷!) ,讲得很详细
    谢谢
       wqs6(竹山)   给我贴了很长
    谢谢up的朋友!