逐步解說:建立及使用靜態程式庫

本逐步解說示範如何建立搭配 C++ 應用程式使用的靜態程式庫 (.lib 檔案)。 使用靜態程式庫是重複使用程式碼的好方法。 您只要在靜態程式庫中撰寫這些常式一次,然後從需要其功能的應用程式中加以參考,就不需在每個應用程式中都重新實作相同的常式。 從靜態程式庫連結的程式碼會變成應用程式的一部分,您不必安裝另一個檔案即可使用程式碼。

這份逐步解說涵蓋下列工作:

必要條件

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

建立靜態程式庫專案

如何建立專案的指示會根據您的 Visual Studio 版本而有所不同。 若要查看您慣用 Visual Studio 版本的文件,請使用版本選取器控制項。 其位於此頁面目錄頂端。

在 Visual Studio 中建立靜態程式庫

  1. 在功能表列上,選擇 [檔案]>[新增]>[專案],以開啟 [建立新專案] 對話方塊。

  2. 在對話方塊頂端,將 [語言] 設定為 C++,將 [平台] 設定為 Windows,並將 [專案類型] 設定為程式庫

  3. 從專案類型的篩選清單中,選取 [Windows 傳統式精靈],然後選擇 [下一步]

  4. [設定新專案] 頁面上的 [專案名稱] 方塊中輸入 MathLibrary,以指定專案的名稱。 在 [解決方案名稱] 方塊中,輸入 StaticMath。 選擇 [建立] 按鈕以開啟 [Windows 桌面專案] 對話方塊。

  5. [Windows 桌面專案] 對話方塊的 [應用程式類型] 下方,選取 [靜態程式庫 (.lib)]

  6. [其他選項] 底下,若已核取 [先行編譯標頭檔] 核取方塊,請將其取消核取。 核取 [空專案] 方塊。

  7. 按一下 [確定] 建立專案。

在 Visual Studio 2017 中建立靜態程式庫

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

  2. [新增專案] 對話方塊中,選取 [已安裝]>[Visual C++]>[Windows 桌面]。 在中央窗格中,選取 [Windows 傳統型精靈]

  3. [名稱] 方塊中指定專案的名稱,例如 MathLibrary。 在 [方案名稱] 方塊中指定方案的名稱,例如 StaticMath。 選擇 [確定] 按鈕。

  4. [Windows 桌面專案] 對話方塊的 [應用程式類型] 下方,選取 [靜態程式庫 (.lib)]

  5. [其他選項] 底下,若已核取 [先行編譯標頭檔] 核取方塊,請將其取消核取。 核取 [空專案] 方塊。

  6. 按一下 [確定] 建立專案。

在 Visual Studio 2015 中建立靜態程式庫

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

  2. [新增專案] 對話方塊中,選取 [已安裝]>[範本]>[Visual C++]>[Win32]。 在中央窗格中,選取 [Win32 主控台應用程式]

  3. [名稱] 方塊中指定專案的名稱,例如 MathLibrary。 在 [方案名稱] 方塊中指定方案的名稱,例如 StaticMath。 選擇 [確定] 按鈕。

  4. Win32 應用程式精靈中,選擇 [下一步]

  5. [應用程式設定] 頁面的 [應用程式類型] 底下,選取 [靜態程式庫]。 在 [其他選項] 底下,取消核取 [先行編譯標頭檔] 核取方塊。 選擇 [完成] 以建立專案。

將類別加入靜態程式庫

將類別加入靜態程式庫

  1. 若要建立新類別的標頭檔,請在方案總管中以滑鼠右鍵按一下,以開啟 MathLibrary 專案的捷徑功能表,然後選擇 [加入]>[新項目]

  2. [加入新項目] 對話方塊中,選取 [Visual C++]>[程式碼]。 在中間窗格中,選取 [標頭檔 (.h)] 。 指定標頭檔的名稱 (例如 MathLibrary.h),然後選擇 [加入] 按鈕。 近乎空白的標頭檔隨即顯示。

  3. 為名稱為 Arithmetic 的類別新增宣告,以執行一般算術運算,例如加法、減法、乘法和除法。 程式碼應該會與以下相似:

    // MathLibrary.h
    #pragma once
    
    namespace MathLibrary
    {
        class Arithmetic
        {
        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);
        };
    }
    
  4. 若要建立新類別的原始程式檔,請在方案總管中開啟 MathLibrary 專案的捷徑功能表,然後選擇 [加入]>[新項目]

  5. [新增項目] 對話方塊的中央窗格中,選取 [C++ 檔 (.cpp)]。 指定原始程式檔的名稱 (例如 MathLibrary.cpp),然後選擇 [加入] 按鈕。 空白原始程式檔隨即顯示。

  6. 使用這個原始程式檔來實作類別 Arithmetic 的功能。 程式碼應該會與以下相似:

    // MathLibrary.cpp
    // compile with: cl /c /EHsc MathLibrary.cpp
    // post-build command: lib MathLibrary.obj
    
    #include "MathLibrary.h"
    
    namespace MathLibrary
    {
        double Arithmetic::Add(double a, double b)
        {
            return a + b;
        }
    
        double Arithmetic::Subtract(double a, double b)
        {
            return a - b;
        }
    
        double Arithmetic::Multiply(double a, double b)
        {
            return a * b;
        }
    
        double Arithmetic::Divide(double a, double b)
        {
            return a / b;
        }
    }
    
  7. 若要建置靜態程式庫,請從功能表列中選取 [建置]>[建置方案]。 該建置會建立可供其他程式使用的靜態程式庫 MathLibrary.lib

    注意

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

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

在 Visual Studio 中建立參考靜態程式庫的 C++ 主控台應用程式

  1. [方案總管] 中,以滑鼠右鍵按一下頂端節點 [方案 'StaticMath'] 以開啟捷徑功能表。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。

  2. 在對話方塊頂端,將 [專案類型] 篩選條件設定為 [主控台]

  3. 從專案類型的篩選清單中,選擇 [主控台應用程式],然後選擇 [下一步]。 在下一個頁面中,於 [名稱] 方塊中輸入 MathClient 以指定專案的名稱。

  4. 選擇 [建立] 按鈕以建立用戶端專案。

  5. 建立主控台應用程式之後,系統會自動為您建立空白程式。 原始程式檔的名稱與您先前選擇的名稱相同。 在此範例中,其名稱是 MathClient.cpp

在 Visual Studio 2017 中建立參考靜態程式庫的 C++ 主控台應用程式

  1. [方案總管] 中,以滑鼠右鍵按一下頂端節點 [方案 'StaticMath'] 以開啟捷徑功能表。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。

  2. [新增專案] 對話方塊中,選取 [已安裝]>[Visual C++]>[Windows 桌面]。 在中央窗格中,選取 [Windows 傳統型精靈]

  3. [名稱] 方塊中指定專案的名稱,例如 MathClient。 選擇 [確定] 按鈕。

  4. [Windows 桌面專案] 對話方塊的 [應用程式類型] 下方,選取 [主控台應用程式 (.exe)]

  5. [其他選項] 底下,若已核取 [先行編譯標頭檔] 核取方塊,請將其取消核取。

  6. 按一下 [確定] 建立專案。

  7. 建立主控台應用程式之後,系統會自動為您建立空白程式。 原始程式檔的名稱與您先前選擇的名稱相同。 在此範例中,其名稱是 MathClient.cpp

在 Visual Studio 2015 中建立參考靜態程式庫的 C++ 主控台應用程式

  1. [方案總管] 中,以滑鼠右鍵按一下頂端節點 [方案 'StaticMath'] 以開啟捷徑功能表。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。

  2. [新增專案] 對話方塊中,選取 [已安裝]>[Visual C++]>[Win32]。 在中央窗格中,選取 [Win32 主控台應用程式]

  3. [名稱] 方塊中指定專案的名稱,例如 MathClient。 選擇 [確定] 按鈕。

  4. [Win32 應用程式精靈] 對話方塊中,選擇 [下一步]

  5. [應用程式設定] 頁面的 [應用程式類型] 下,確認已選取 [主控台應用程式]。 在 [其他選項] 底下,取消核取 [先行編譯標頭檔],然後核取 [空專案] 核取方塊。 選擇 [完成] 以建立專案。

  6. 若要將來源檔案新增至空專案,請在方案總管中以滑鼠右鍵按一下,以開啟 MathClient 專案的捷徑功能表,然後選擇 [加入]>[新項目]

  7. [加入新項目] 對話方塊中,選取 [Visual C++]>[程式碼]。 在中間窗格中,選取 [C++ 檔 (.cpp)] 。 指定原始程式檔的名稱 (例如 MathClient.cpp),然後選擇 [加入] 按鈕。 空白原始程式檔隨即顯示。

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

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

  1. 您必須先參考數學常式,才能在靜態程式庫中使用它。 在 [方案總管] 中,開啟 MathClient 的捷徑功能表,然後選擇 [加入]>[參考]

  2. [加入參考] 對話方塊會列出您可以參考的程式庫。 [專案] 索引標籤會列出目前方案中的專案,以及這些專案參考的任何程式庫。 在 [專案] 索引標籤上,選取 [MathLibrary] 核取方塊,然後選擇 [確定] 按鈕。

  3. 若要參考 MathLibrary.h 標頭檔,您必須修改包含的目錄路徑。 在 [方案總管] 中,以滑鼠右鍵按一下 [MathClient] 以開啟捷徑功能表。 選擇 [屬性] 以開啟 [MathClient 屬性頁] 對話方塊。

  4. [MathClient 屬性頁] 對話方塊中,將 [組態] 下拉式值變更為 [所有組態]。 將 [平台] 下拉式值設定為 [所有平台]

  5. 選取 [設定屬性]>C/C++>[一般] 屬性頁面。 在 [其他 Include 目錄] 屬性中,指定 MathLibrary 目錄的路徑或瀏覽至其位置。

    若要瀏覽目錄路徑:

    1. 請開啟 [其他 Include 目錄] 屬性值下拉式清單,然後選擇 [編輯]

    2. [其他 Include 目錄] 對話方塊中,在文字輸入框上方按兩下。 然後選擇行尾的省略符號按鈕 (...)。

    3. [選取目錄] 對話方塊中,向上瀏覽一層,然後選取 [MathLibrary] 目錄。 然後選擇 [選取資料夾] 按鈕以儲存您的選取項目。

    4. [其他 Include 目錄] 對話方塊中,選擇 [確定] 按鈕。

    5. [屬性頁面] 對話方塊中,選擇 [確定] 按鈕,儲存您對專案進行的變更。

  6. 您現在可以在此應用程式中使用 Arithmetic 類別,方法是在程式碼中包含 #include "MathLibrary.h" 標頭。 使用此程式碼取代 MathClient.cpp 的內容:

    // MathClient.cpp
    // compile with: cl /EHsc MathClient.cpp /link MathLibrary.lib
    
    #include <iostream>
    #include "MathLibrary.h"
    
    int main()
    {
        double a = 7.4;
        int b = 99;
    
        std::cout << "a + b = " <<
            MathLibrary::Arithmetic::Add(a, b) << std::endl;
        std::cout << "a - b = " <<
            MathLibrary::Arithmetic::Subtract(a, b) << std::endl;
        std::cout << "a * b = " <<
            MathLibrary::Arithmetic::Multiply(a, b) << std::endl;
        std::cout << "a / b = " <<
            MathLibrary::Arithmetic::Divide(a, b) << std::endl;
    
        return 0;
    }
    
  7. 若要建置可執行檔,請從功能表列上選擇 [建置]>[建置方案]

執行應用程式

執行應用程式

  1. 確保將 MathClient 選取為預設專案。 若要選取,請在方案總管中按一下滑鼠右鍵以開啟,開啟 MathClient 的捷徑功能表,然後選擇 [設定為啟始專案]

  2. 若要執行專案,請在功能表列上選擇 [偵錯]>[啟動但不偵錯]。 輸出應與以下相似:

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

另請參閱

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