动态库与静态库的区别

来源:互联网 发布:北京铭万网络 编辑:程序博客网 时间:2024/04/29 14:34
       .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   这类错误,这就是lib文件连接错误或者没有包含.c、.cpp文件到工程里,关键是如果在C++工程里用了C语言写的lib文件,就必需要这样包含:   
extern   "C"   
{   
  #include   "myheader.h"   

}   

这是因为C语言写的lib文件没有C++所必须的名字破坏,C函数不能被重载,因此连接器会出错

文章出处:飞诺网(www.diybl.com):http://www.diybl.com/course/3_program/c++/cppjs/20081117/151410.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果id号忘记了怎么办 7icloud存储满了怎么办 苹果6icloud满了怎么办 电脑内存槽坏了怎么办 苹果7照片删不了怎么办 屋里太冷怎么办小妙招 天气太热,没空调怎么办 8岁儿童发烧39度怎么办 4岁儿童发烧39度怎么办 6岁儿童发烧39度怎么办 手机被晒得很烫怎么办 子宫肌瘤引起的贫血怎么办 月子没做好腰疼怎么办 狗狗屁股流血水怎么办 狗狗屁股在流血怎么办 劳累引起的腰疼怎么办 心口发闷堵的慌怎么办 刨腹产后肚子大怎么办 c盘空间不够用怎么办 敷面膜玩手机了怎么办 领导想辞退我该怎么办 领导要辞退我要怎么办 想辞职老板不批怎么办 辞职后工资不给怎么办 闻组词表示听见怎么办 染完头发后悔了怎么办 跟不好的人相处怎么办 销售时遇到客诉怎么办? 面对挑衅你的人怎么办 我的性格很拘谨怎么办 奶胀且有硬块怎么办 家里的鸡生病了怎么办 睡觉压的心脏疼怎么办 草图大师7很卡怎么办 空调不除霜怎么办格力 鸡蛋叫魂立住了怎么办 50岁工作不好找怎么办 微信好友拉黑我怎么办 我要离婚对方不离怎么办 我上身胖下身瘦怎么办 网贷逾期被起诉怎么办