共用方式為


逐步解說:建立和使用靜態程式庫 (C++)

更新:2010 年 9 月

我們將會建立的下一個程式庫類型是靜態程式庫 (LIB)。 使用靜態程式庫是重複使用程式碼的好方法, 您只需要撰寫這些常式一次,並從需要其功能的應用程式中參考它們,而不需要在所建立的每個程式中都重新實作相同的常式。

此逐步解說示範如何完成下列工作:

  • 建立靜態程式庫專案。

  • 將類別加入至靜態程式庫。

  • 建立會參考靜態程式庫的主控台應用程式。

  • 在應用程式中使用靜態程式庫的功能。

  • 執行應用程式。

必要條件

本主題假設您已了解 C++ 語言的基礎。 如果您才剛開始學習 C++,建議您參考 MSDN Library 上的教學課程:第一層:C++ 初學者指南 (英文)。

若要建立靜態程式庫專案

  1. 在 [檔案] 功能表中,選取 [新增],然後選取 [專案]。

  2. 在 [專案類型] 窗格上,選取 [Visual C++] 下的 [Win32]。

  3. 選取 [範本] 窗格上的 [Win32 主控台應用程式]。

  4. 選擇專案的名稱,例如 MathFuncsLib,然後在 [名稱] 欄位中輸入此名稱。 選擇方案的名稱,例如 StaticLibrary,然後在 [方案名稱] 欄位中輸入此名稱。

  5. 按一下 [確定] 啟動 [Win32 應用程式精靈]。 在 [Win32 應用程式精靈] 對話方塊的 [概觀] 頁面上,按 [下一步]。

  6. 在 [Win32 應用程式精靈] 之 [應用程式設定] 頁面的 [應用程式類型] 下,選取 [靜態程式庫]。

  7. 在 [Win32 應用程式精靈] 之 [應用程式設定] 頁面的 [其他選項] 下,清除 [先行編譯標頭] 核取方塊。

  8. 按一下 [完成] 以建立專案。

若要將類別加入至靜態程式庫

  1. 從 [專案] 功能表選取 [加入新項目],以建立新類別的標頭檔。 [加入新項目] 對話方塊隨即顯示。 從 [分類] 窗格中,在 [Visual C++] 之下選取 [程式碼]。 從 [範本] 窗格中,選取 [標頭檔 (.h)]。 選擇標頭檔的名稱,例如 MathFuncsLib.h,然後按一下 [加入]。 將會顯示空白檔案。

  2. 加入一個名為 MyMathFuncs 的類別,用來執行一般算術運算,例如加法、減法、乘法和除法。 若要這樣做,請以下列程式碼取代 MathFuncsLib.h 的內容。

    // MathFuncsLib.h
    
    namespace MathFuncs
    {
        class MyMathFuncs
        {
        public:
            // Returns a + b
            static double Add(double a, double b);
    
            // Returns a - b
            static double Subtract(double a, double b);
    
            // Returns a * b
            static double Multiply(double a, double b);
    
            // Returns a / b
            // Throws DivideByZeroException if b is 0
            static double Divide(double a, double b);
        };
    }
    
  3. 從 [專案] 功能表選取 [加入新項目…],以建立新類別的原始程式檔。 [加入新項目] 對話方塊隨即顯示。 從 [分類] 窗格中,在 [Visual C++] 之下選取 [程式碼]。 從 [範本] 窗格中,選取 [C++ 檔 (.cpp)]。 選擇原始程式檔的名稱,例如 MathFuncsLib.cpp,然後按一下 [加入]。 將會顯示空白檔案。

  4. 在原始程式檔中實作 MyMathFuncs 的功能。 若要這樣做,請以下列程式碼取代 MathFuncsLib.cpp 的內容。

    // MathFuncsLib.cpp
    // compile with: /c /EHsc
    // post-build command: lib MathFuncsLib.obj
    
    #include "MathFuncsLib.h"
    
    #include <stdexcept>
    
    using namespace std;
    
    namespace MathFuncs
    {
        double MyMathFuncs::Add(double a, double b)
        {
            return a + b;
        }
    
        double MyMathFuncs::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double MyMathFuncs::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double MyMathFuncs::Divide(double a, double b)
        {
            if (b == 0)
            {
                throw new invalid_argument("b cannot be zero!");
            }
    
            return a / b;
        }
    }
    
  5. 若要將專案建置到靜態程式庫中,從 [專案] 功能表中選取 [屬性]。 在左邊窗格的 [組態屬性] 下,選取 [一般]。 在右邊窗格中,將 [組態型別] 變更為 [靜態程式庫 (.lib)]。 按一下 [確定] 儲存這些變更。

    注意事項注意事項

    當您從命令列建置時,就必須以兩個步驟建置程式。 首先,以 /c 編譯器選項 (cl /c /EHsc MathFuncsLib.cpp) 使用 Cl.exe 來編譯程式碼。 這會建立一個名為 MathFuncsLib.obj 的目的檔 (Object File)。 如需詳細資訊,請參閱 /c (編譯而不連結)。 接下來,使用 Library Manager Lib.exe 連結程式碼 (lib MathFuncsLib.obj)。 這會建立靜態程式庫 MathFuncsLib.lib。 如需 Library Manager 的詳細資訊,請參閱 LIB 參考

  6. 從 [建置] 功能表中選取 [建置方案],以編譯靜態程式庫。 這會建立可供其他程式使用的靜態程式庫。

若要建立會參考靜態程式庫的主控台應用程式

  1. 若要建立會參考及使用剛才所建立之靜態程式庫的應用程式,請從 [檔案] 功能表中選取 [新增],再選取 [專案]。

  2. 在 [專案類型] 窗格上,選取 [Visual C++] 下的 [Win32]。

  3. 選取 [範本] 窗格上的 [Win32 主控台應用程式]。

  4. 選擇專案的名稱,例如 MyExecRefsLib,然後在 [名稱] 欄位中輸入此名稱。 在 [方案] 旁邊的下拉式清單方塊中選取 [加入至方案]。 這樣會將此新專案加入至和靜態程式庫相同的方案中。

  5. 按一下 [確定] 啟動 [Win32 應用程式精靈]。 在 [Win32 應用程式精靈] 對話方塊的 [概觀] 頁面上,按 [下一步]。

  6. 在 [Win32 應用程式精靈] 之 [應用程式設定] 頁面的 [應用程式類型] 下,選取 [主控台應用程式]。

  7. 在 [Win32 應用程式精靈] 之 [應用程式設定] 頁面的 [其他選項] 下,清除 [先行編譯標頭] 核取方塊。

  8. 按一下 [完成] 以建立專案。

若要在應用程式中使用靜態程式庫的功能

  1. 建立主控台應用程式之後,精靈會自動為您建立空白程式。 原始程式檔的名稱會與您先前所選擇的專案名稱相同, 在本範例中,它的名稱是 MyExecRefsLib.cpp。

  2. 您必須參考剛才建立的靜態程式庫以使用其數學常式。 若要這樣做,請從 [專案] 功能表中選取 [參考]。 從 MyExecRefsLib 的 [屬性頁] 對話方塊中,展開 [通用屬性] 節點,然後按一下 [加入新參考]。 如需 [參考] 對話方塊的詳細資訊,請參閱<專案名稱> 屬性頁對話方塊、通用屬性、架構與參考

  3. 接著會顯示 [加入參考] 對話方塊。 [專案] 索引標籤會列出目前方案中的專案,以及任何您可以參考的程式庫。 選取 [專案] 索引標籤上的 [MathFuncsLib]。 按一下 [確定]。

  4. 若要參考 MathFuncsLib.h 標頭檔,您必須修改 Include 目錄路徑。 在 MyExecRefsLib 的 [屬性頁] 對話方塊中,依序展開 [組態屬性] 節點、[C/C++] 節點,然後選取 [一般]。 在 [其他 Include 目錄] 屬性值中,輸入 MathFuncsLib 目錄的路徑或瀏覽至它。

    若要瀏覽至目錄路徑,請在屬性值下拉式清單方塊中按一下 [編輯]。 在 [其他 Include 目錄] 對話方塊的文字方塊中,選取空白行,然後按一下行尾的省略符號按鈕 ()。 在 [選取目錄] 對話方塊中,選取 MathFuncsLib 目錄,然後按一下 [選取資料夾] 儲存選擇並關閉對話方塊。 在 [其他 Include 目錄] 對話方塊中,按一下 [確定]。

  5. 現在您就可以在此應用程式中使用 MyMathFuncs 類別。 若要這樣做,請以下列程式碼取代 MyExecRefsLib.cpp 的內容。

    // MyExecRefsLib.cpp
    // compile with: /EHsc /link MathFuncsLib.lib
    
    #include <iostream>
    
    #include "MathFuncsLib.h"
    
    using namespace std;
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        cout << "a + b = " <<
            MathFuncs::MyMathFuncs::Add(a, b) << endl;
        cout << "a - b = " <<
            MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
        cout << "a * b = " <<
            MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
        cout << "a / b = " <<
            MathFuncs::MyMathFuncs::Divide(a, b) << endl;
    
        return 0;
    }
    
  6. 選取 [建置] 功能表中的 [建置方案],以建置可執行檔。

若要執行應用程式

  1. 確認所選取的預設專案是 [MyExecRefsLib]。 在 [方案總管] 中,選取 [MyExecRefsLib],然後選取 [專案] 功能表中的 [設定為啟始專案]。

  2. 若要執行專案,請從 [偵錯] 功能表選取 [啟動但不偵錯]。 輸出應該會與以下相似:

    a + b = 106.4
    a - b = -91.6
    a * b = 732.6
    a / b = 0.0747475
    

後續步驟

上一個主題:逐步解說:建立和使用動態連結程式庫 (C++) |下一個主題:逐步解說:建立和使用 Managed 組件 (C++)

請參閱

工作

Visual C++ 導覽

逐步解說:部署程式 (C++)

其他資源

Visual C++ 程式設計方法

部署 (Visual C++)

變更記錄

日期

記錄

原因

2010 年 9 月

釐清<若要在應用程式中使用靜態程式庫的功能>的步驟 4。

客戶回函。