本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文
建議使用 Visual Studio 2017

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

這個逐步解說顯示如何建立靜態程式庫 (.lib 檔) 與 C++ 應用程式中使用。 使用靜態程式庫是一個好方法重複使用程式碼。 而不必重新實作需要功能的每個應用程式的相同常式,在靜態程式庫中撰寫它們一次再參考它從應用程式。 從靜態程式庫連結的程式碼變成一部分的應用程式你不必安裝另一個檔案使用程式碼。

此逐步解說包含下列工作:

對 C++ 語言的基本了解。

若要建立靜態程式庫專案

  1. 在功能表列上,選擇 [檔案]、[新增]、[專案]。

  2. 在 [新的專案] 對話方塊的左窗格中,展開 [安裝]],則 [範本], [Visual C++]],然後選取 [Win32]。

  3. 在中間窗格中,選取 [Win32 主控台應用程式]。

  4. 為指定的專案 (例如 MathFuncsLib,在 [名稱] 方塊中。 為指定的方案 (例如 StaticLibrary,在 [方案名稱] 方塊中。 選擇 [確定] 按鈕。

  5. 在 [Win32 應用程式精靈] 對話方塊的 [概觀] 頁,請選擇 [] 按鈕。

  6. 在 [應用程式設定] 頁面上,在 [應用程式類型] 下,選取 [靜態程式庫。]。

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

  8. 選擇 [結束] 按鈕以建立專案。

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

  1. 若要建立新類別的標頭檔,開啟 MathFuncsLib 專案的捷徑功能表上的 [方案總管]],然後選取 [加入]],則 [新的項目。]。 在 [加入新項目。] 對話方塊中,選取左窗格中,在 [Visual C++] 下,選取 [程式碼]。 在中間窗格中,選取 [標頭檔 (.h)]。 為標頭中指定的檔案 (例如 MathFuncsLib.h,然後選擇 [加入] 按鈕。 空白的標頭檔中。

  2. 加入一個名為 MyMathFuncs 執行一般算術運算 (例如加法、減法、乘法和除法。 程式碼看起來應該像這樣:

    // 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
            static double Divide(double a, double b);
        };
    }
    
  3. 若要建立新類別的原始程式檔,請開啟 MathFuncsLib 專案的捷徑功能表上的 [方案總管]],然後選取 [加入]],則 [新的項目。]。 在 [加入新項目。] 對話方塊中,選取左窗格中,在 [Visual C++] 下,選取 [程式碼]。 在中間窗格中,選取 [C++ 檔案 (.cpp)]。 為指定的來源檔案 (例如 MathFuncsLib.cpp,然後選擇 [加入] 按鈕。 一個空白的原始程式檔隨即顯示。

  4. 使用這個原始程式檔實作 MyMathFuncs 的功能。 程式碼看起來應該像這樣:

    // 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)
        {
            return a / b;
        }
    }
    
  5. 藉由選取 [組建] 來編譯的靜態程式庫,請在功能表列上的 [建置方案] 。 這會建立可供其他程式使用的靜態程式庫。

    注意事項 注意事項

    當您在 Visual Studio 命令列建置時,您在兩個步驟必須建立程式。 首先,編譯程式碼並建立名為 MathFuncsLib.obj 的目的檔中執行的 cl /c /EHsc MathFuncsLib.cpp ( cl 命令叫用編譯器, Cl.exe,,且 /c 選項,指定編譯而不連結。 如需詳細資訊,請參閱 /c (編譯而不連結))。其次,連接程式碼和建立靜態程式庫執行 lib MathFuncsLib.obj MathFuncsLib.lib。 ( lib 叫用命令程式庫管理員, Lib.exe。 如需詳細資訊,請參閱 LIB 參考)。

若要建立 C ++. 主控台中參考靜態程式庫的應用程式

  1. 在功能表列上,選擇 [檔案]、[新增]、[專案]。

  2. 在左窗格中,在 [Visual C++] 底下,選取 [Win32]。

  3. 在中間窗格中,選取 [Win32 主控台應用程式]。

  4. 為指定的專案 (例如 MyExecRefsLib,在 [名稱] 方塊中。 在 [方案] 的下拉式清單中,選取 [加入至方案]。 這將新專案加入至包含靜態程式庫的方案。 選擇 [確定] 按鈕。

  5. 在 [Win32 應用程式精靈] 對話方塊的 [概觀] 頁,請選擇 [] 按鈕。

  6. 在 [應用程式設定] 頁面上,在 [應用程式類型] 下,選取 [主控台應用程式]。

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

  8. 選擇 [結束] 按鈕以建立專案。

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

  1. 在您建立主控台應用程式之後,空的程式建置。 原始程式檔的名稱與您所選擇的名稱。 在此範例中,它具有名為 MyExecRefsLib.cpp。

  2. 在您可以在靜態程式庫中使用數學常式,您必須參考它。 若要這樣做,請開啟 MyExecRefsLib 專案的捷徑功能表上的 [方案總管]],然後選取 [參考]。 在 MyExecRefsLib [屬性頁] 對話方塊中,展開 [通用屬性] 節點,選取 [Framework 和參考]],然後選擇 [加入新的參考] 按鈕。 如需 [參考] 對話方塊的詳細資訊,請參閱<專案名稱> 屬性頁對話方塊、通用屬性、架構與參考

  3. [加入參考] 對話方塊會列出您可以參考的程式庫。 [專案] 索引標籤會列出目前方案中的專案和所有程式庫所包含。 在 [專案] 索引標籤上,選取 MathFuncsLib 核取方塊,然後選擇 [OK] 按鈕。

  4. 若要參考 MathFuncsLib.h 標頭檔,您必須修改 Include 目錄路徑。 在 MyExecRefsLib 的 [屬性頁] 對話方塊中,展開 [組態屬性] 節點,然後展開 [C/C++] 節點,然後選取 [概觀]。 在 [其他 Include 目錄] 旁邊,請指定 MathFuncsLib 目錄的路徑或為它瀏覽。

    為目錄路徑要瀏覽,開啟屬性值的下拉式清單,然後選取 [編輯]。 在 [其他 Include 目錄] 對話方塊,請在文字方塊中,選取空白行然後選擇省略符號按鈕 ([]) 位於行的結尾。 在 [選取目錄。] 對話方塊中,選取 MathFuncsLib 目錄然後選取 [選取資料夾] 按鈕儲存選取範圍和關閉對話方塊。 在 [其他 Include 目錄] 對話方塊中,選取 [OK] 按鈕,然後在 [屬性頁] 對話方塊中,選取 [OK] 按鈕儲存為專案的變更。

  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 = a b * -91.6 = 732.6/b = 0.0747475
                
顯示: