在VC++6.0 中编写某个C程序文件中需要 printf 函数时,我们只需要将 stdio.h 包含在该文件中即可。但如何使我们自己编写的函数有这样的效果呢?
printf 函数的声明在stdio.h 头文件中,而其具体实现则在libc.lib 静态库文件中。这启示我们利用静态链接库来实现这种效果。
1. 制作静态链接库
首先建立静态链接库工程simpleCalc,然后导入plus.h、plus.cpp、minus.h、minus.cpp四个文件。
plus.h代码如下:
// plus.h
#ifndef PLUS_H
#define PLUS_H
extern "C" int plus(int x,int y);
#endif
plus.cpp代码如下:
// plus.cpp
#include "stdio.h"
#include "plus.h"
int plus(int x,int y)
{
return x+y;
}
minus.h代码如下:
// minus.h
#ifndef MINUS_H
#define MINUS_H
extern "C" int minus(int x,int y);
#endif
minus.cpp代码如下:
// minus.cpp
#include "stdio.h"
#include "minus.h"
int minus(int x,int y)
{
return x-y;
}
编译、链接后将simpleCalc.lib、plus.h、minus.h 分类整理到特定文件中(本例中,将simpleCalc.lib 放入F:\lib 文件夹中,plus.h、minus.h 放入F:\include 文件夹中)。
2. 静态库文件测试
新建工程testMyLib,导入main.cpp 文件,其代码如下:
//main.cpp
#include "stdio.h"
#include "plus.h"
#include "minus.h"
void main()
{
printf("5-3=%d\n",minus(5,3));
printf("5+3=%d\n",plus(5,3));
}
如果直接编译后链接,就会产生错误。
在链接前需做以下工作:
1)在”工具→选项“对话框中选择”目录“标签,下拉菜单选”Include files“,添加路径”F:\include"; 下拉菜单选“Library files",添加路径”F:\lib".
2)在“工程→设置”对话框中选择“连接”标签,在“对象/库模块”中添加simpleCalc.lib(将光标移至末尾,空格后输入simpleCalc.lib)
如此之后,编译、链接成功,程序正常运行。
通过这种方式,可以将自己编写的并且比较成熟的函数实现制作成静态链接库放在特定文件中,然后利用此方法重复使用,提高编写效率。