?? 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"><link rel="stylesheet" href="../../../cpcw.css"></head><body link="#3973DE" alink="#3973DE" background="../../bg.gif"><div align="center"><center> <table width="85%" border="0"> <tr bgcolor="#FFFFFF"> <td> <div align="center"> <center> </center> </div> <p align="CENTER"><b><font color="red">9.2靜態連接庫</font></b></p> <p> <b><font color="blue">9.2.1創建靜態庫</font></b></p> <p> 現在以一個簡單的數學函數庫為例介紹靜態庫的創建和使用。</p> <p> 要創建靜態庫,選擇File->New菜單,彈出New對話框。選擇Projects標簽,在項目類型列表框中選擇Win32 Static Library,在Name中輸入mymath,表明要創建一個mymath.lib的靜態庫文件。</p> <p> 然后用Project->Add to Project->Files菜單往mymath工程中加入以下兩個文件:</p> <p> 1.頭文件(見清單9.1):定義了Summary和Factorial兩個函數,分別用于完成求和與階乘。注意這里使用C風格的函數,需要加入extern “C”關鍵字,表明它是C風格的外部函數。</p> <p> <b></b>清單9.1 頭文件</p> <p>#ifndef _MYMATH_H</p> <p>#define _MYMATH_H</p> <p>extern “C”</p> <p>{</p> <p>int Summary(int n);</p> <p>int Factorial(int n);</p> <p>}</p> <p>#endif</p> <p>2.源文件:包含了Summary和Factorial函數的定義,見清單9.2。</p> <p> <b></b>清單9.2 源文件</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> </p> <p> 在Build菜單下,選擇Build菜單下的Build mymath.lib。Visual C++編譯鏈接工程,在mymath\debug目錄下生成mymath.lib文件。至此,靜態連接庫生成的工作就做完了。下面用一個小程序來測試這個靜態庫。</p> <div align="center"> <center> <table border="2" cellpadding="2" cellspacing="0" width="100%" bgcolor="#80D6FF"> <tr> <td width="100%"> <b></b>提示:用戶在交付最終靜態連接庫時,只需要提供.lib文件和頭文件,不需要再提供庫的源代碼。</td> </tr> </table> </center> </div> <p><b> </b></p> <p><b><font color="blue">9.2.2測試靜態庫</font></b></p> <p><b> </b></p> <p><b> </b>用AppWizard生成一個基于對話框的應用程序test。打開test資源文件,修改IDD_TEST_DIALOG對話框資源,加入兩個按鈕。按鈕ID和文字為:</p> <p> IDC_SUM “&Summary”</p> <p> IDC_FACTORIAL “&Factorial”</p> <p> 如圖9-1所示。</p> <p align="center"> <img src="T9_1.gif" alt="T9_1.tif (84932 bytes)" width="376" height="203"></p> <p align="center"> 圖9-1 修改test對話框</p> <p> 用ClassWizard為上述兩個按鈕Click事件生成消息處理函數OnSum和OnFactorial,并加入代碼,修改后的OnSum和OnFactorial見清單9.3。</p> <p> 清單9.3 OnSum和OnFactorial函數定義</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>由于要使用mymath.lib中的函數,首先要將mymath.lib和mymath.h兩個文件拷貝到test目錄下。然后用Project->Add to Project->Files命令,將mymath.lib加入到工程中。</p> <p> 在testdlg.cpp文件頭部,還要加入頭文件mymath.h:</p> <p>#include "stdafx.h"</p> <p>#include "Test.h"</p> <p>#include "TestDlg.h"</p> <p> </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>編譯運行test程序,點Factorial按鈕,彈出如圖9-2的消息框。</p> <p align="center"> <img src="T9_2.gif" alt="T9_2.tif (33706 bytes)" width="174" height="133"></p> <p align="center">圖9-2 Test程序運行結果</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> <p><a href="http://www.cpcw.com">電腦報首頁</a> <a href="../../index.htm">網絡學院首頁</a></p> </center> </div> <hr noshade color="#3973DE" size="1"> </td> </tr> </table> </center></div></body></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -