Lib Dll 差异 调用
wq_T
转载
关注
0点赞·2169人阅读
动态链接库的Lib文件与Dll文件的作用
(1)lib是编译时需要的,dll是运行时需要的。
如果要完成源代码的编译,有lib就够了。
如果要使动态连接的程序运行起来,有dll就够了。
在开发和调试阶段,当然最好都有。
(2)在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件(.LIB)包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。
如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在其中。静态编译的lib文件有好处:给用户安装时就不需要再挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。
定义函数库的方法及应用:一、2个相关的命令
1、TCC——TC的DOS下的命令行编译连接工具
2、TLIB——TC的DOS下的库 *** 作工具
二、1个自定义的函数库的例子
1、
在TC集成环境下,编一个文件USERADD.C
#define
_NO_MAIN
int
add(int
*a,int
*b)
{
int
c
c=(*a)+(*b)
return
c
}
按ALT—F9编译
生成一个
USERADD.OBJ文件。
2、按F10—F—O
退到DOSSHELL(DOS环境下)
COPY
USERADD.OBJ
到
..\LIB目录,在\LIB目录下执行
TLIB
USERLIB.LIB+USERADD.OBJ
就生成了一个自己的函数库
USERLIB,在这个函数库里就包含了函数模块
int
add(int
*a,int
*b)
的二进制代码。现在已经将自定义的函数放进了函数库,就可以把原文件USERADD.C删掉不要了。(当然,为了以后维护方便,还是作一个备份为好)。
以后如有其它的函数模块,也可以编译后用TLIB
命令加入到这个函数库里。
3、写一个包含文件
USER1.H,写完后COPY到INCLUDE
目录。内容如下:
int
add(int
*,int
*)
4、作好了以上的自定义函数库的准备工作,现在就可以使用了。
写一个程序,取名为ADD-1.C,在程序中调用库函数add(
)
#include
#include
void
main(
)
{
int
a,b,c
a=20b=30
c=add(&a,&b)
printf(“%d”,c)
}
5、在DOS命令行下,执行
TCC
ADD-1.C
..\LIB\USERLIB.LIB
就OK!
运行ADD-1.EXE,可以看到输出结果
50
Tc生成lib的方法:
扩展库与自建LIB库使用扩展库TC所带的库在有的情况下是无法满足功能要求的,自己写一个太麻烦,找到了一个LIB库又怕不会用。在WIN-TC中,对于使用外部的扩展库(第三方LIB)提供了一个方便的解决方法:首先要确定你的LIB库是FOR
TC版本的而不是FOR
VC或是其它的。如果确定是FOR
TC的版本的话就把你的首标文件(或称头文件),就是扩展名为*.h的文件拷贝到WIN-TC的include目录里,然后把相应名称的*.lib文件拷贝到lib目录,然后再运行WIN-TC时选择“编译配置”菜单项,你会看到扩展库信息栏目里有你的LIB库文件名在上面了,但是没有打钩。然后你把它钩选后再“确定”保存,以后的编译程序时就自动链接该扩展库了。自建立LIB库将自己的代码编译成LIB库的格式有利与保护自己的代码版权。如何来生成自己的LIB库呢?请按照下面的方法:
STEP
1——生成目标代码(OBJ)
建立mylib的代码文件/*********************
mylib.c
*********************/void
myfun(){printf("
myfun()
in
mylib.lib
")}然后保存为WIN-TC目录下的mylib.c文件然后到菜单项:运行->编译设置
看看“产生
OBJ
文件”是否已选择,若未选择则选择之。然后回到主界面,点“编译链接”按钮(F9
查看原帖>>
晚上好。。
lib是库的意思。
不管是WIndows还是Linux,都会遇到库文件。一般在Windows下,库文件后缀是lib,而在Linux下,库文件后缀是a,o或者so。
看你问这个问题可以知道,你不是编程的或是刚接触编程的,那就简单说下。(windows下编程)
一般写源代码时需要调用某些方法,而这些方法别人或者系统已经写好了,你可以直接拿过来用。
这样以来,有两种方法来使用lib文件:
直接将lib文件嵌入到目标程序。
通过lib文件调用系统里的某个dll文件里的某个方法。
方法1里的lib一般是别人写好的,方法2里的lib一般是系统提供的。、
手打,望采纳
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)