希望成为一个有思想,有信仰的程序设计师。
分类: C/C++
2012-06-23 15:54:25
什么叫静态库?
程序编译一般需经预处理、编译、汇编和链接几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库【1】,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。
怎么创建静态库?
(1)VC++6.0环境
第一步:NEW->Projects->Win32 Static Library
第二步:编写头文件和.cpp源文件。
第三步:将头文件和.cpp源文件添加到刚才新建的工程中。如果你用的是VC6.0可能会下面的问题。(对于这个问题,下面会有一篇文章来解决。文章地址:
http://blog.chinaunix.net/space.php?uid=26642637&do=blog&id=3252148)
第四步:编译、链接就可以生成一个后缀为.lib文件。也就是说静态库就生成好了。
(2)DEV C++环境
第一步:NEW->Project->Static Library
第二步:编写头文件和.cpp源文件。
第三步:将头文件和.cpp源文件添加到刚才新建的工程中。
第四步:编译、链接就可以生成一个后缀为.a文件。(应为DEV C++是基于GCC的,所以生成的静态库文件是以.a结尾的。)
小结:其实创建静态库的过程,都是类似的。
如何使用静态库?
(1)在VC6.0和DEV C++中通用的方法(对于后缀是.lib文件):
使用预编译语句。如:#pragma comment(lib, "库文件名")
并且要将头文件在程序的开始出声明。
例子:
#include
#include
#include "Max_Value.h"
#pragma comment(lib, "Max_Value.lib")using namespace std;
int main(int argc, char *argv[])
{
int a[3]={2,3,4};
int i;
printf("hello!\n");
i=Find_max(a,3);
printf("%d\n",i);
system("PAUSE");
return 0;
}库文件在最后贴出来。
(2)在dev C++ 中使用.a静态库文件
首先要创建一个工程,然后Project->Project Options->Parameters,点击Add library or Object,选择你要使用的那个库文件。这个时候就随便你什么后缀的库文件了。
库文件具体的源代码如下:
//Max_Value.h
#ifndef _MAX_VALUE_H
#define _MAX_VALUE_H
int Find_max(int *a, int n);
#endif
//Max_Value.cpp
int Find_max(int *a ,int n )
{
int max;
int i;
max=a[0];
for(i=1;i
}
return max;
}
参考文献:
【1】