提问:lib文件与dll文件的区别

jumperinriver 2004-08-03 05:00:12
如题
...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
醉马不肖 2004-08-03
  • 打赏
  • 举报
回复
程序文件外(dll和动态lib)和内(静态lib)的关系
Cline 2004-08-03
  • 打赏
  • 举报
回复
lib文件有两种:
1.静态库lib,它包含函数的二进制代码.程序link时,被复制到output文件
2.动态库lib,它包含函数的描述和在DLL中的位置.程序link时,根据函数的位置生成函数调用的jump指令.

所以静态库的lib一般比较大,动态库的lib一般比较小.
holyeagle 2004-08-03
  • 打赏
  • 举报
回复
转载别人的,觉得不错

lib 文件和DLL相关联的。希望下面的有点帮助
.dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。

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

如果你想从你的代码分离一个dll文件出来代替静态连接库,仍然需要一个lib文件。这个lib文件将被连接到程序告诉操作系统在运行的时候你想用到什么dll文件,一般情况下,lib文件里有相应的dll文件的名字和一个指明dll输出函数入口的顺序表。如果不想用lib文件或者是没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress。事实上,我们可以在Visual C++ IDE中以二进制形式打开lib文件,大多情况下会看到ASCII码格式的C++函数或一些重载操作的函数名字。

一般我们最主要的关于lib文件的麻烦就是出现unresolved symble _some_function@1234"这类错误,这就是lib文件连接错误或者没有包含.c、.cpp文件到工程里,关键是如果在C++工程里用了C语言写的lib文件,就必需要这样包含:
extern "C"
{
#include "myheader.h"
}
这是因为C语言写的lib文件没有C++所必须的名字破坏,C函数不能被重载,因此连接器会出错。
银耳环 2004-08-03
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3238/3238782.xml?temp=.8875086
快乐鹦鹉 2004-08-03
  • 打赏
  • 举报
回复
如果同时有lib文件和dll文件生成的话,lib文件应该是dll文件的一个索引一样的东西。dll文件就是动态库功能的具体实现了。
bestbear 2004-08-03
  • 打赏
  • 举报
回复
程序库/模版库(LIB)

对于一些常用的函数,如printf、strcpy等,把他们编成库函数,由使用者调用,减少重复劳动和出错的可能,但编译后代码长度并没有变小。

动态链接库(DLL)

当多个进程都需要调用某个函数时,为了节省内存空间把这些函数编成动态连接库,由多个进程动态共享。

选择使用LIB还是DLL

要考虑应用中具体情况,比如说多少进程共享一个DLL合适,效率如何等等,更具实际做出权衡。另外,DLL也有其缺点,例如不同版本DLL的兼容性不可能做到完美。
【版权声明】
本openssl的VC软件包由王志海(DragonKing)根据openssl整理提供,Eric Young's拥有对所有源代码的最终版权,一切应用应该遵照openssl的声明。该版本为openssl-0.9.6h
欢迎联系本人或提意见:
Email:wzhah@263.net
HomePage: http://gdwzh.126.com[openssl中文专业论坛,提供大量中文资料]
【功能说明】
本软件包将每个openssl的apps程序做成一个可直接运行调试的VC Console 类型应用程序,方便研究和运用openssl的朋友,避免了openssl在windows下的编译问题,并且因为可以在VC环境下进行调试,使得对openssl的各个应用程序的流程更容易理解,这对openssl初学者尤其方便。希望大家多提意见。
【使用说明】
要正确使用该工程文件,呢应该从http://gdwzh.126.com获取如下目录和文件
1.Windows平台下openssl动态库,包含两个dll文件,将他们拷贝到Windows/system32目录下;
2.Windows平台下openssl静态库,下载解压后得到一个名为lib文件夹,包含两个lib文件
3.openssl的头文件,下载解压后得到一个名为include的录。
4.Windows平台rsa项目文件,下载解压后得到一个名为rsa的目录,里面包含了项目主文件
5.将目录lib、include、和rsa拷贝到同一个目录下;
6.完成上述步骤,就可以像普通的VC项目一样进行调试编译了,有任何问题,请到http://openssl.126.com提问
【注意】
1.获取最新信息请到http://gdwzh.126.com的openssl专业论坛.
2.编译好的运用程序有可能需要其它的openssl文件支持,如openssl.cnf等,请参照openssl相关文档或本站信息公布。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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