转自:http://dev.firnow.com/course/3_program/c++/cppjs/20081117/151410.html
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 这类错误,这就是lib文件连接错误或者没有包含.c、.cpp文件到工程里,关键是如果在C++工程里用了C语言写的lib文件,就必需要这样包含:
extern "C"
{
#include "myheader.h"
}
这是因为C语言写的lib文件没有C++所必须的名字破坏,C函数不能被重载,因此连接器会出错。
分享到:
相关推荐
linux静态库和动态库的区别
静态库的制作:(inc/lib/src/main.c) gcc -c src/*.c(编译src目录下的.c文件生成.o文件) ar rs libmath.a *.o(生成静态库:libmath.a(命名规则:必须以lib开头,以.a结尾,中间是库名:math)) 静态库的使用: gcc main.c -...
使用简单的程序展示了C++调用动态库和静态库的方法。 文件结构: exe:笔者部署可运行文件,因开发环境版本不同,可能存在无法直接使用的情况,两个部署文件(copy_ldd.sh及useLib1.sh)可以结合文章分享的(ubuntu下...
Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法,这是Jni测试引用第三方静态库和动态库demo
压缩包内包含两个文件夹curl_静态库和curl_动态库,内容说明如下: curl_静态库下面: bin子目录包含curl.exe及动态库libcurl.dll include子目录包含头文件 lib子目录包含动态库的导入库文件libcurl.lib curl_...
函数库分为静态库和动态库两种。 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库...
Linux下Gcc生成和使用静态库和动态库详解Linux下Gcc生成和使用静态库和动态库详解
Ubuntu linux动态库静态库的创建与使用附工程代码....
1、二者均需要由.o文件生成,二者前缀均为lib,静态库后缀以 .a,动态库的后缀以.so 2、生成目标可执行文件后,静态库可以直接删除,因为静态库已经被加载到可...3、当静态库和动态库同名时, gcc命令将优先使用动态库
本文详细介绍了linux下的静态库与动态库的区别,适合于那些对静态库和动态库分不清楚的同学,以及那些想要自己研究如何生成动态库的同学
linux下C语言,通过gcc生成静态库和动态库
演示Qt静态链接库与动态链接库的创建与使用。环境:windows xp Qt4, MinGW编译器环境。供备忘和参考。
1. 工程中包含静态库A,动态库B,可执行程序C。C依赖于A和B,而B依赖于A。在A中定义有全局变量X(或类的静态成员变量),则在动态库B中访问的X,与可执行程序C中访问的X是同一个变量还是两个不同的变量? 答案:是两...
1:模块化CMakeLists 的写法 2:每个模块先生成静态库 3:把各个静态库生成一个动态库 4:生成一个测试demo 验证动态库
CC++ 编译器和调试器以及静态库、动态库使用汇总
linux静态库和动态库制作归纳文档,详细编辑制作流程,清晰的思路。
简单的Linux下的静态库和动态链接库的编译方法和使用发发
Linux静态库和动态库学习总结 静态库和动态库的比较 使用静态库动态库的方法
android studio 简单demo实现将c++代码 编译成静态库和动态库 简单的makefile文件一看就明白
关于静态库和动态库的创建、调用。动态库有:MFC动态库、win动态库等。