📄 chap9_2.htm
字号:
<html>
<head>
<title>9.2静态连接库</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body link="#3973DE" alink="#3973DE">
<font SIZE="5"><b><div align="center"><center>
<table border="0" width="615" cellspacing="0" cellpadding="0">
<tr>
</b><td><div align="center"><center><table border="0" width="615" cellpadding="0" cellspacing="0" height="20">
<tr>
<td width="377" bgcolor="#15397D" height="20"></td>
<td width="238" bgcolor="#000000" height="20"><p align="right"></font><span style="text-decoration: none"><a href="../../index.htm"><font color="#FFFFFF">电脑报Visual
C++网络教程</font></a></span></td>
</tr>
</table>
</center></div><font FACE="Times New Roman" SIZE="4"><b><p ALIGN="CENTER"></b></font><font color="#3973DE" FACE="Times New Roman" size="4">9.2</font><font color="#3973DE" size="4">静态连接库</font><font FACE="Times New Roman" size="3"></p>
<p></font><font color="#3973DE" FACE="Times New Roman" SIZE="3">9.2.1</font><font SIZE="3" color="#3973DE">创建静态库</font><font FACE="Times New Roman" size="3"></p>
<p></font><font SIZE="3">现在以一个简单的数学函数库为例介绍静态库的创建和使用。</font><font FACE="Times New Roman" size="3"></p>
<p></font><font SIZE="3">要创建静态库,选择</font><font FACE="Times New Roman" size="3">File->New</font><font SIZE="3">菜单,弹出</font><font FACE="Times New Roman" size="3">New</font><font SIZE="3">对话框。选择</font><font FACE="Times New Roman" size="3">Projects</font><font SIZE="3">标签,在项目类型列表框中选择</font><font FACE="Times New Roman" size="3">Win32 Static Library</font><font SIZE="3">,在</font><font FACE="Times New Roman" size="3">Name</font><font SIZE="3">中输入</font><font FACE="Times New Roman" size="3">mymath</font><font SIZE="3">,表明要创建一个</font><font FACE="Times New Roman" size="3">mymath.lib</font><font SIZE="3">的静态库文件。</font><font FACE="Times New Roman" size="3"></p>
<p></font><font SIZE="3">然后用</font><font FACE="Times New Roman" size="3">Project->Add
to Project->Files</font><font SIZE="3">菜单往</font><font FACE="Times New Roman" size="3">mymath</font><font SIZE="3">工程中加入以下两个文件:</font><font FACE="Times New Roman" size="3"></p>
<p>1.</font><font SIZE="3">头文件(见清单</font><font FACE="Times New Roman" size="3">9.1</font><font SIZE="3">):定义了</font><font FACE="Times New Roman" size="3">Summary</font><font SIZE="3">和</font><font FACE="Times New Roman" size="3">Factorial</font><font SIZE="3">两个函数,分别用于完成求和与阶乘。注意这里使用</font><font FACE="Times New Roman" size="3">C</font><font SIZE="3">风格的函数,需要加入</font><font FACE="Times New Roman" size="3">extern </font><font SIZE="3">“</font><font FACE="Times New Roman" size="3">C</font><font SIZE="3">”关键字,表明它是</font><font FACE="Times New Roman" size="3">C</font><font SIZE="3">风格的外部函数。<b></p>
<p></b>清单</font><font FACE="Times New Roman" size="3">9.1 </font><font SIZE="3">头文件</font><font FACE="Times New Roman" size="3"></p>
<p>#ifndef _MYMATH_H</p>
<p>#define _MYMATH_H</p>
<p>extern </font><font SIZE="3">“</font><font FACE="Times New Roman" size="3">C</font><font SIZE="3">”</font><font FACE="Times New Roman" size="3"></p>
<p>{</p>
<p>int Summary(int n);</p>
<p>int Factorial(int n);</p>
<p>}</p>
<p>#endif</p>
<p>2.</font><font SIZE="3">源文件:包含了</font><font FACE="Times New Roman" size="3">Summary</font><font SIZE="3">和</font><font FACE="Times New Roman" size="3">Factorial</font><font SIZE="3">函数的定义,见清单</font><font FACE="Times New Roman" size="3">9.2</font><font SIZE="3">。<b></p>
<p></b>清单</font><font FACE="Times New Roman" size="3">9.2 </font><font SIZE="3">源文件</font><font FACE="Times New Roman" size="3"></p>
<p>int Summary(int n)</p>
<p>{</p>
<p>int sum=0;</p>
<p>int i;</p>
<p>for(i=1;i<=n;i++)</p>
<p>{</p>
<p>sum+=i;</p>
<p>}</p>
<p>return sum;</p>
<p>}</p>
<p>int Factorial(int n)</p>
<p>{</p>
<p>int Fact=1;</p>
<p>int i;</p>
<p>for(i=1;i<=n;i++)</p>
<p>{</p>
<p>Fact=Fact*i;</p>
<p>}</p>
<p>return Fact;</p>
<p>}</p>
<p></font><font size="3"> </font><font FACE="Times New Roman" size="3"></p>
<p></font><font SIZE="3">在</font><font FACE="Times New Roman" size="3">Build</font><font SIZE="3">菜单下,选择</font><font FACE="Times New Roman" size="3">Build</font><font SIZE="3">菜单下的</font><font FACE="Times New Roman" size="3">Build mymath.lib</font><font SIZE="3">。</font><font FACE="Times New Roman" size="3">Visual C++</font><font SIZE="3">编译链接工程,在</font><font FACE="Times New Roman" size="3">mymath\debug</font><font SIZE="3">目录下生成</font><font FACE="Times New Roman" size="3">mymath.lib</font><font SIZE="3">文件。至此,静态连接库生成的工作就做完了。下面用一个小程序来测试这个静态库。<b></p>
<div align="center"><center><table border="2" cellpadding="2" cellspacing="0" width="100%" bgcolor="#80D6FF">
<tr>
<td width="100%"></b>提示:用户在交付最终静态连接库时,只需要提供</font><font FACE="Times New Roman" size="3">.lib</font><font SIZE="3">文件和头文件,不需要再提供库的源代码。</font></td>
</tr>
</table>
</center></div><p><b> <font FACE="Times New Roman"></p>
<p></font></b><font color="#3973DE" FACE="Times New Roman">9.2.2</font><font color="#3973DE">测试静态库</font></p>
<p><b><font SIZE="4"> </font><font FACE="Times New Roman" SIZE="4"></p>
<p></font></b><font SIZE="3">用</font><font FACE="Times New Roman" SIZE="3">AppWizard</font><font SIZE="3">生成一个基于对话框的应用程序</font><font FACE="Times New Roman" SIZE="3">test</font><font SIZE="3">。打开</font><font FACE="Times New Roman" SIZE="3">test</font><font SIZE="3">资源文件,修改</font><font FACE="Times New Roman" SIZE="3">IDD_TEST_DIALOG</font><font SIZE="3">对话框资源,加入两个按钮。按钮</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">和文字为:</font><font FACE="Times New Roman" SIZE="3"></p>
<p>IDC_SUM </font><font SIZE="3">“</font><font FACE="Times New Roman" SIZE="3">&Summary</font><font SIZE="3">”</font><font FACE="Times New Roman" SIZE="3"></p>
<p>IDC_FACTORIAL </font><font SIZE="3">“</font><font FACE="Times New Roman" SIZE="3">&Factorial</font><font SIZE="3">”</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">如图</font><font FACE="Times New Roman" SIZE="3">9-1</font><font SIZE="3">所示。</font><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><img src="T9_1.gif" alt="T9_1.tif (84932 bytes)" WIDTH="376" HEIGHT="203"><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><font SIZE="3">图</font><font FACE="Times New Roman" SIZE="3">9-1
</font><font SIZE="3">修改</font><font FACE="Times New Roman" SIZE="3">test</font><font SIZE="3">对话框</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">用</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">为上述两个按钮</font><font FACE="Times New Roman" SIZE="3">Click</font><font SIZE="3">事件生成消息处理函数</font><font FACE="Times New Roman" SIZE="3">OnSum</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">OnFactorial</font><font SIZE="3">,并加入代码</font><font FACE="Times New Roman" SIZE="3">,</font><font SIZE="3">修改后的</font><font FACE="Times New Roman" SIZE="3">OnSum</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">OnFactorial</font><font SIZE="3">见清单</font><font FACE="Times New Roman" SIZE="3">9.3</font><font SIZE="3">。</p>
<p>清单</font><font FACE="Times New Roman" SIZE="3">9.3 OnSum</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">OnFactorial</font><font SIZE="3">函数定义</font><font FACE="Times New Roman" SIZE="3"></p>
<p>void CTestDlg::OnSum() </p>
<p>{</p>
<p>// TODO: Add your control notification handler code here</p>
<p>int nSum=Summary(10);</p>
<p>CString sResult;</p>
<p>sResult.Format("Sum(10)=%d",nSum);</p>
<p>AfxMessageBox(sResult);</p>
<p>}</p>
<p>void CTestDlg::OnFactorial() </p>
<p>{</p>
<p>// TODO: Add your control notification handler code here</p>
<p>int nFact=Factorial(10);</p>
<p>CString sResult;</p>
<p>sResult.Format("10!=%d",nFact);</p>
<p>AfxMessageBox(sResult);</p>
<p>}</p>
<p></font><font SIZE="3">由于要使用</font><font FACE="Times New Roman" SIZE="3">mymath.lib</font><font SIZE="3">中的函数,首先要将</font><font FACE="Times New Roman" SIZE="3">mymath.lib</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">mymath.h</font><font SIZE="3">两个文件拷贝到</font><font FACE="Times New Roman" SIZE="3">test</font><font SIZE="3">目录下。然后用</font><font FACE="Times New Roman" SIZE="3">Project->Add to Project->Files</font><font SIZE="3">命令,将</font><font FACE="Times New Roman" SIZE="3">mymath.lib</font><font SIZE="3">加入到工程中。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">在</font><font FACE="Times New Roman" SIZE="3">testdlg.cpp</font><font SIZE="3">文件头部,还要加入头文件</font><font FACE="Times New Roman" SIZE="3">mymath.h</font><font SIZE="3">:</font><font FACE="Times New Roman" SIZE="3"></p>
<p>#include "stdafx.h"</p>
<p>#include "Test.h"</p>
<p>#include "TestDlg.h"</p>
<p></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p>#include "mymath.h"</p>
<p>#ifdef _DEBUG</p>
<p>#define new DEBUG_NEW</p>
<p>#undef THIS_FILE</p>
<p>static char THIS_FILE[] = __FILE__;</p>
<p>#endif</p>
<p></font><font SIZE="3">编译运行</font><font FACE="Times New Roman" SIZE="3">test</font><font SIZE="3">程序,点</font><font FACE="Times New Roman" SIZE="3">Factorial</font><font SIZE="3">按钮,弹出如图</font><font FACE="Times New Roman" SIZE="3">9-2</font><font SIZE="3">的消息框。</font><font FACE="Times New Roman" SIZE="3"></p>
<p align="center"></font><img src="T9_2.gif" alt="T9_2.tif (33706 bytes)" WIDTH="174" HEIGHT="133"><font FACE="Times New Roman" SIZE="3"></p>
</font><p align="center"><font size="2">图9-2 Test程序运行结果</font></p>
<div align="center"><center><table border="0" cellpadding="0" cellspacing="0" width="615">
<tr>
<td><a href="chap9_1.htm">上一页</a></td>
<td><p align="right"><a href="chap9_3.htm">下一页</a></td>
</tr>
</table>
</center></div><font SIZE="5"><hr noshade color="#3973DE" size="1">
<p align="center"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual C++王朝(Where programmers come together)</a>协助制作<br>
未经许可,请勿以任何形式复制</font></td>
<b>
</tr>
</table>
</center></div>
<p ALIGN="CENTER"></b><font SIZE="5"> </font><font FACE="Times New Roman" SIZE="5"></p>
</font><font FACE="Times New Roman" SIZE="3">
<p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
</font></b>
<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p></font> </p>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -