新手才鸟贴,请问系统头文件是怎么link到tlb的?

gooore 2009-07-15 01:14:02
如题

请教tlb和dll的区别,分工?什么叫静态连接?

不胜感激
...全文
59 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jindan_jinming 的回复:]
tlb 类型库,它包含接口相关信息。
dll 动态连接库,它包含二进制代码,资源...
VC可以把tlb作为资源编译到dll中。
[/Quote]
TLB是组件服务的接口 ,它包含接口相关信息
而DLL包含了接口和实现
有些情况下,比如客户方需要远程调用,那么在客户机上部署dll是没有意义的,因为dll所需的环境在服务器上,而客户只需要dll里的接口定义部分,这个时候tlb就派上用场了

关于静态链接,mengjfu解释的已经非常清楚了!
  • 打赏
  • 举报
回复
tlb 类型库,它包含接口相关信息。
dll 动态连接库,它包含二进制代码,资源...
VC可以把tlb作为资源编译到dll中。



mengjfu 2009-07-15
  • 打赏
  • 举报
回复
.dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。

.lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果你想使用lib文件,就必须:
1 包含一个对应的头文件告知编译器lib文件里面的具体内容
2 设置lib文件允许编译器去查找已经编译好的二进制代码

静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧