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

本逐步解說示範如何建立搭配 C++ 應用程式使用的靜態程式庫 (.lib 檔案)。 使用靜態程式庫是重複使用程式碼的好方法。 與其在每個需要該功能的應用程式中重複實作相同的例程,不如先在靜態函式庫中寫一次,然後從應用程式中引用。 從靜態函式庫連結的程式碼會成為你應用程式的一部分。 你不需要安裝另一個檔案就能使用程式碼。

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

必要條件

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

建立靜態程式庫專案

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

要在 Visual Studio 建立靜態函式庫專案:

  1. 在選單列中,選擇「File>NewProject>」以開啟「建立新 project」對話框。

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

  3. 從篩選出的專案類型清單中,選擇 Windows 桌面精靈,然後選擇「下一步」。

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

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

  6. 「其他選項」底下,如果已選取 「預先編譯標頭」 核取方塊,請將其清除。 選擇 「空白專案」。

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

要在 Visual Studio 2017 建立靜態函式庫專案:

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

  2. 新建 Project 對話框中,選擇已安裝>的 Visual C++>Windows 桌面。 在中央窗格中,選取 [Windows 桌面精靈]

  3. 名稱框中指定專案名稱,例如數學圖書館。 在解決方案名稱框中指定解決方案名稱,例如 StaticMath。 選擇 確定

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

  5. 其他選項 下方,如果已選取 預先編譯標頭 核取方塊,請將其清除。 選擇 「空白專案」。

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

要在 Visual Studio 2015 建立靜態函式庫專案:

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

  2. 新建 Project 對話框中,選擇已安裝>>範本Visual C++>Win32。 在中央窗格中,選取 [Win32 主控台應用程式]

  3. 名稱框中指定專案名稱,例如數學圖書館。 在解決方案名稱框中指定解決方案名稱,例如 StaticMath。 選擇 確定

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

  5. [應用程式設定] 頁面的 [應用程式類型] 底下,選取 [靜態程式庫]。 在 「附加選項」中,清除 預先編譯的標頭 勾選框。 選擇 [完成] 以建立專案。

將類別加入靜態程式庫

要將類別加入靜態函式庫:

  1. 建立一個新類別的標頭檔。 在 方案總管 中,右鍵點擊 MathLibrary 以開啟專案的右鍵選單。 選擇新增>新項目

  2. 新增項目 對話框中,選擇 Visual C++>Code。 在中間窗格中,選取 [標頭檔 (.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 命令列建置時,您必須以兩個步驟建置程式。

    1. 執行 cl /c /EHsc MathLibrary.cpp 以編譯程式碼並建立名為 MathLibrary.obj 的物件檔案。指令呼叫 cl 編譯器 Cl.exe,選項 /c 指定編譯但不連結。 欲了解更多資訊,請參閱 /c(無連結編譯)。
    2. 執行 lib MathLibrary.obj 後連結程式碼並建立靜態函式庫 MathLibrary.lib。 該 lib 指令會呼叫圖書館管理器,Lib.exe。 欲了解更多資訊,請參閱 LIB參考資料

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

要建立一個參考 Visual Studio 靜態函式庫的 C++ 控制台應用程式:

  1. 方案總管 中,右鍵點擊頂端節點「Solution 'StaticMath'」即可開啟右鍵選單。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。

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

  3. 從專案類型的篩選清單中,選擇 [主控台應用程式],然後選擇 [下一步]。 在下一頁輸入 MathClient 作為專案名稱。

  4. 選擇 建立 以建立客戶專案。

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

要建立一個參考 Visual Studio 2017 靜態函式庫的 C++ 主控台應用程式:

  1. 方案總管 中,右鍵點擊頂端節點「Solution 'StaticMath'」即可開啟右鍵選單。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。

  2. 新增 Project 對話框中,選擇已安裝>Visual C++>Windows 桌面。 在中央窗格中,選取 [Windows 桌面精靈]

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

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

  5. 其他選項 下,如果已選取 預先編譯標頭 核取方塊,請將其清除。

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

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

要建立一個參考 Visual Studio 2015 靜態函式庫的 C++ 控制台應用程式:

  1. 方案總管 中,右鍵點擊頂端節點「Solution 'StaticMath'」即可開啟右鍵選單。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。

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

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

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

  5. [應用程式設定] 頁面的 [應用程式類型] 下,確認已選取 [主控台應用程式]。 在「附加」選項中,清除預編譯標頭,然後選擇「Empty Project」。 選擇 [完成] 以建立專案。

  6. 若要將原始檔案加入空專案,請在 方案總管 中右鍵點擊 MathClient 專案的右鍵選單,然後選擇新增>項目

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

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

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

  1. 在使用裡面的數學運算前,先參考靜態函式庫。 在 方案總管 開啟 MathClient 專案的右鍵選單,然後選擇新增>參考。

  2. 新增參考對話框會列出你可以參考的函式庫。 [專案] 索引標籤會列出目前方案中的專案,以及這些專案參考的任何程式庫。 打開 專案 標籤,選擇 數學圖書館,然後選擇 確定

  3. 修改包含的目錄路徑以參考 MathLibrary.h 標頭檔。 在 方案總管 中,右鍵點擊 MathClient 以開啟右鍵選單。 選擇 屬性 以開啟 MathClient 屬性頁面 對話框。

  4. MathClient 屬性頁面 對話框中,將 設定 值設為 所有配置。 將 月台 設為 所有月台

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

    若要瀏覽目錄路徑:

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

    2. 「額外包含目錄 」對話框中,雙擊文字框頂端。 然後選擇行尾的省略符號按鈕 (...)。

    3. 「選擇目錄 」對話框中,往上移動一層,然後選擇 MathLibrary 目錄。 然後選擇 [選取資料夾] 按鈕以儲存您的選取項目。

    4. 「額外包含目錄 」對話框中,選擇 確定 按鈕。

    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 開啟右鍵選單,然後選擇設定為 StartUp Project

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

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

另請參閱

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