静态链接库与动态链接库.doc介绍
、
本文意在讲解静态链接库与动态链接库的创建与使用, 在此之前先来对二者的概念、区别及
优缺点进行简要的阐述。其中大多内容参考相关网络资料, 由于本人能力有限,不能确保完
全准确无误,若有偏差之处请不吝指出。文中使用到的代码均何时
的机器变化影响到了该应用程序。
这些问题的原因是应用程序不同组件的版本信息没有由系统记录或加强。 而且,系统为某个
应用程序所做的改变会影响机器上的所有应用程序 一现在建立完全从变化中隔离出来的应
用程序并不容易。
三、 静态链接库的创建与使用
在此通过一个实例来介绍静态库的创建与使用。 在该实例中,我们将一个实现两整数相加求
和的函数封装到静态库中供其他程序调用。
首先,使用Visual Studio 2008 来创建一个带预编译头的静态库项目 Static,该项目包含在
名为Library的解决方案中。
创建静态库项目
创建一个不带预编译头的静态链接库项目有以下几个步骤:
单击菜单命令“文件”-“新建”-“项目”,弹出“新建项目”对话框;
在弹出的“新建项目”对话框中,选择左边“类别”列表中选择 “ Visual
C++ ” -“ Win32 ”,在右边的“模版”中选择“ Win32项目”;
在下方输入项目名称“ Static ”,并选择项目创建的位置,勾选“生成解 决方案”,并输入解决方案名称“ Library ”,然后点击“确定”按钮;
点击两次“下一步”按钮,进入“应用程序设置”界面;
在“应用程序设置”界面中,选择“静态库”,并确保下方“附加选项” 中的“预编译头”被勾选,然后点击“完成”按钮。
12 编辑项目
经过上面的步骤,初步创建了一个带预编译头的静态库项目, 接下来编辑该项目以达到我们
的创建静态库的目的。
首先添加一个用于定义导出函数的源文件 ,编码实现两个整数相加的 Add函数。
源文件代码如下:
#include “ // 标准头文件
int Add(i nt a, i nt b)
{
return a + b;
}
接着点击菜单命令,“工具”-“生成Static ”。如果一切顺利的话,就会在解决方案的“ Debug 目录中生成了名为“ ”的静态链接库。
同时,需要给该静态链接库编写一个 ,以便在链接时告知编译该链接库
中的导出函数声明。 ,只要声明一下 Add函数就可以:
#ifndef _
STATIC H
//
防止该头文件重复引用
#defi ne _
_STATIC_H_
int Add( int a, i nt b);
//
声明导出函数
#en dif
接着点击菜单命令,“工具” -“生成Static ”。如果一切顺利的话,就会在 Library解决方
案的Debug目录中生成了名为 。
在Library解决方案下,再添加一个 Win32控制台应用程序空项目 UseLIB。程序主文件名
,其中包含用于调用 Add函数的程序入口函数 main。将刚才创建的
及其声明头文件 一同复制到UseLIB项目目录下。
(也可以在IDE的项目属性中设置链接器选项,或者只复制 文件并设置UseLIB项目的"项目依赖项”为 Static项目)。
:
#pragma comment(lib, “ // 链接静态库
#i nclude <>
#include “ ,声明导出函数 Add
int main( void)
{
int a = 1, b = 2;
printf( “ %d+%d=%d” , a, b, Add(a, b)); II 调用 中的 Add 函数
return 0;
}
接下来点击菜单命令,“工具” -“生成UseLIB ”。如果顺利的话,就会在 Library解决方
案的Debug目录中生成了名为 , ,将在控制台 中输出结果:1+2=3
由于项目中创建的源文件为 .CPP文件,即C++源文件,因此 Visual C++按C++规范,并
采用__cdecl调用
静态链接库与动态链接库 来自淘豆网www.taodocs.com转载请标明出处.