lib库的作用是什么,为什么打包时,有时必须要某个dll对应的lib文件,可是有时就不需要对应的lib文件呢? lib库的作用是什么,为什么打包时,有时必须要某个dll对应的lib文件,可是有时就不需要对应的lib文件呢?比如打包某个程序时,需要将运行环境打进去,有时将dll文件一同打包就行了,但是有时必须要包含这个dll相对应的lib文件才行。这是为什么呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当一个程序要静态调用一个链接库的时候,需要这个链接库工程的.h文件,.lib文件,.dll文件。。 打包成exe的文件,还有可能要用到lib文件吗?我曾经以为在程序设计时才会用到lib文件,打包成可执行文件后,就不需要了,我的理解不对吗? 这要看写程序的人是怎么调用那些链接库的了,如果都是动态调用的话,用不着lib文件,但是静态调用的话,lib文件也是必须的 静态调用的话,lib文件也不是必须的吧。好像只要dll就可以了。lib文件只是编译的时候用。 静态编译的lib代码都插入最终可执行文件,因此是不需要打包的;动态dll的lib,只是一些符号导入库,最终打包需要的是dll文件而不需要lib文件。总之,lib文件和最终可执行文件没有关系。 lib 文件一般只是在编译的过程中需要用的,对dll来说,发布一定是要的,lib是开发阶段要用的,如果你的dll函数接口改了,对应的lib也要再编译一次,如果是静态库调用的话,lib也是在编译的时候用到,具体发布一般不需要,但是有写函数需要特定寻址的话,lib文件也需要,关键看你如何调用动态库 和lib库。这里面还是有些学问的呢。呵呵。 我的理解是:lib文件分为两种:静态链接库与动态链接库,这里的动态链接库不是:dll(dynamic link library中文翻译:动态链接库)的意思。如果说的更准确的一点就是:lib(library)有static 与dynamic两种链接方式。什么叫做链接方式呢?通俗一点来说,就是函数实体与函数头的区别。MFC是通过lib文件来解决代码重用问题的。我的想法是这样的:比如我有一个完成加法功能的函数代码副本,然后,在我的工程里面要用到这个功能了?怎么办?我有两种解决方法:一种方法是直接把所有代码全都拷贝到工程里面;另外一种方法是,把加法、减法等等功能的函数做成一个文件,然后,在工程里面我只需要做一些工作,比如定位该功能在那个功能函数集中具体的位置就可以了。前面一种方法就是:静态链接方式,对应到工程里面就是只需要lib文件。其中lib文件包含了所有的函数代码。后面一种方法就是:动态链接方式,对应到工程里面就需要lib文件+dll文件。其中lib文件只包含了类似函数头文件的一些说明。而dll文件包含了所有函数真正实行的源代码。另外再补充一点,第一种方式是在编译阶段就把代码生成了。第二种方式dll文件是在程序执行过程中载入的,所以真正执行代码会比较优化一点。windows就采用了这样一种方式。说的有点乱,网上有很多不负责任的人会说查MSDN,或是说大堆术语,反正我是不懂。自己理解了最为重要 ~这些只是我的理解,批判着看 LIB有两种,一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入EXE文件中,所以编译好了之后,LIB文件就没有了.一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是编译中用,编译完成了,LIB也没用了.至于动态调用DLL的话,根本用不上LIB文件.所以楼主说的情况根本不存在,EXE文件生成之后,就用不着LIB文件了. XP系统设计的软件在Win7系统显示问题 ping的问题 关于播放声音文件的一个问题 如何得到虚拟内存页面文件的最大值? 请问:如何使窗口不闪烁 一个作图的问题,请高手指点一二! 我想把用向导生成的Dialog项目的对话框以ShowWindow(SW_SHOW)的方式显示,应该怎样修改源代码. 工作,茫然??? 一家公司的面试题,能不能给小第做一下啊? 【自绘按钮,怎么设置不可用按钮】 如何在文档类中调用SetScrollSizes()函数设置滚动条? 课程设计,请求源码
我曾经以为在程序设计时才会用到lib文件,打包成可执行文件后,就不需要了,我的理解不对吗?
lib文件只是编译的时候用。
什么叫做链接方式呢?通俗一点来说,就是函数实体与函数头的区别。MFC是通过lib文件来解决代码重用问题的。我的想法是这样的:比如我有一个完成加法功能的函数代码副本,然后,在我的工程里面要用到这个功能了?怎么办?我有两种解决方法:一种方法是直接把所有代码全都拷贝到工程里面;另外一种方法是,把加法、减法等等功能的函数做成一个文件,然后,在工程里面我只需要做一些工作,比如定位该功能在那个功能函数集中具体的位置就可以了。
前面一种方法就是:静态链接方式,对应到工程里面就是只需要lib文件。其中lib文件包含了所有的函数代码。
后面一种方法就是:动态链接方式,对应到工程里面就需要lib文件+dll文件。其中lib文件只包含了类似函数头文件的一些说明。而dll文件包含了所有函数真正实行的源代码。
另外再补充一点,第一种方式是在编译阶段就把代码生成了。第二种方式dll文件是在程序执行过程中载入的,所以真正执行代码会比较优化一点。windows就采用了这样一种方式。
说的有点乱,网上有很多不负责任的人会说查MSDN,或是说大堆术语,反正我是不懂。自己理解了最为重要 ~这些只是我的理解,批判着看