lib库的作用是什么,为什么打包时,有时必须要某个dll对应的lib文件,可是有时就不需要对应的lib文件呢?
比如打包某个程序时,需要将运行环境打进去,有时将dll文件一同打包就行了,但是有时必须要包含这个dll相对应的lib文件才行。这是为什么呢?

解决方案 »

  1.   

    当一个程序要静态调用一个链接库的时候,需要这个链接库工程的.h文件,.lib文件,.dll文件。。
      

  2.   

    打包成exe的文件,还有可能要用到lib文件吗?
    我曾经以为在程序设计时才会用到lib文件,打包成可执行文件后,就不需要了,我的理解不对吗?
      

  3.   

    这要看写程序的人是怎么调用那些链接库的了,如果都是动态调用的话,用不着lib文件,但是静态调用的话,lib文件也是必须的
      

  4.   

    静态调用的话,lib文件也不是必须的吧。好像只要dll就可以了。
    lib文件只是编译的时候用。
      

  5.   

    静态编译的lib代码都插入最终可执行文件,因此是不需要打包的;动态dll的lib,只是一些符号导入库,最终打包需要的是dll文件而不需要lib文件。总之,lib文件和最终可执行文件没有关系。
      

  6.   

    lib 文件一般只是在编译的过程中需要用的,对dll来说,发布一定是要的,lib是开发阶段要用的,如果你的dll函数接口改了,对应的lib也要再编译一次,如果是静态库调用的话,lib也是在编译的时候用到,具体发布一般不需要,但是有写函数需要特定寻址的话,lib文件也需要,关键看你如何调用动态库 和lib库。这里面还是有些学问的呢。呵呵。
      

  7.   

    我的理解是:lib文件分为两种:静态链接库与动态链接库,这里的动态链接库不是:dll(dynamic link library中文翻译:动态链接库)的意思。如果说的更准确的一点就是:lib(library)有static 与dynamic两种链接方式。
    什么叫做链接方式呢?通俗一点来说,就是函数实体与函数头的区别。MFC是通过lib文件来解决代码重用问题的。我的想法是这样的:比如我有一个完成加法功能的函数代码副本,然后,在我的工程里面要用到这个功能了?怎么办?我有两种解决方法:一种方法是直接把所有代码全都拷贝到工程里面;另外一种方法是,把加法、减法等等功能的函数做成一个文件,然后,在工程里面我只需要做一些工作,比如定位该功能在那个功能函数集中具体的位置就可以了。
    前面一种方法就是:静态链接方式,对应到工程里面就是只需要lib文件。其中lib文件包含了所有的函数代码。
    后面一种方法就是:动态链接方式,对应到工程里面就需要lib文件+dll文件。其中lib文件只包含了类似函数头文件的一些说明。而dll文件包含了所有函数真正实行的源代码。
    另外再补充一点,第一种方式是在编译阶段就把代码生成了。第二种方式dll文件是在程序执行过程中载入的,所以真正执行代码会比较优化一点。windows就采用了这样一种方式。
    说的有点乱,网上有很多不负责任的人会说查MSDN,或是说大堆术语,反正我是不懂。自己理解了最为重要 ~这些只是我的理解,批判着看
      

  8.   

    LIB有两种,一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入EXE文件中,所以编译好了之后,LIB文件就没有了.一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是编译中用,编译完成了,LIB也没用了.至于动态调用DLL的话,根本用不上LIB文件.所以楼主说的情况根本不存在,EXE文件生成之后,就用不着LIB文件了.