Chinaunix首页 | 论坛 | 博客
  • 博客访问: 564025
  • 博文数量: 50
  • 博客积分: 571
  • 博客等级: 中士
  • 技术积分: 1162
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-20 14:01
个人简介

希望成为一个有思想,有信仰的程序设计师。

文章分类

全部博文(50)

文章存档

2016年(2)

2015年(2)

2014年(13)

2013年(10)

2012年(23)

分类: 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

)

VRQNWV0C5($Z$$Y[EIZL_Z4

 

 

 

 

 

第四步:编译、链接就可以生成一个后缀为.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            if(a[i]>max) max=a[i];     
      }
      return max;
}

 

参考文献:

【1】

阅读(11560) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~