在具体讲解动态链接库DLL之前,我们先来讲解静态链接库,通过一个静态链接库的例子可以快速的帮助我们建立“库”的概念。
一个静态链接库的例子
首先我们使用VC ++创建静态链接库,利用VC ++创建一个Win32 Static Library类型的工程,并建立两个文件LibTest.h和LibTest.cpp,代码如下:
//文件LibTest.h
#ifndef LIB_H
#define LIB_H
extern "C" int add(int x,int y);//声明为C编译、连接方式的外部函数
#endif
//文件LibTest.cpp
#include "LibTest.h"
int add(int x,int y)
{
return x + y;
}
直接编译这个工程,会在工程目录下的debug目录下得到一个.lib文件,
这个文件就是一个函数库,那么我们怎么使用它呢
----------------------------------------------------------------------华丽的分割线--------------------------------------------------------------------------
接着,我们再新建一个简单的Win32 Console Application工程Test,该工程只有一个Test.cpp文件,代码如下:
//文件Test.cpp
#include <stdio.h>
#include "..\LibTest\LibTest.h"
#pragma comment( lib, "..\\LibTest\\debug\\libTest.lib" ) //指定与静态库一起连接
int main(int argc, char* argv[])
{
printf( "2 + 3 = %d", add( 2, 3 ) );
return 0;
}
注意这个代码中
#pragma comment( lib , "..\\debug\\libTest.lib" )的意思是让本文件生成的.obj文件与刚才生成libTest.lib一起链接。
如果 不用#pragma comment指定,则可以直接在VC++中设置,如图,依次选择tools-->options-->directories-->library files菜单或选项,填入库文件路径。
运行程序,得到结果: