本逐步解說示範如何建立搭配 C++ 應用程式使用的靜態程式庫 (.lib 檔案)。 使用靜態程式庫是重複使用程式碼的好方法。 與其在每個需要該功能的應用程式中重複實作相同的例程,不如先在靜態函式庫中寫一次,然後從應用程式中引用。 從靜態函式庫連結的程式碼會成為你應用程式的一部分。 你不需要安裝另一個檔案就能使用程式碼。
這份逐步解說涵蓋下列工作:
必要條件
對 C++ 語言基本知識的了解。
建立靜態程式庫專案
如何建立專案的指示會根據您的 Visual Studio 版本而有所不同。 若要查看您慣用 Visual Studio 版本的文件,請使用版本選取器控制項。 其位於此頁面目錄頂端。
要在 Visual Studio 建立靜態函式庫專案:
在選單列中,選擇「File>NewProject>」以開啟「建立新 project」對話框。
在對話方塊頂端,將 [語言] 設定為 C++,將 [平台] 設定為 Windows,並將 [專案類型] 設定為程式庫。
從篩選出的專案類型清單中,選擇 Windows 桌面精靈,然後選擇「下一步」。
在 [設定新專案] 頁面上的 [專案名稱] 方塊中輸入 MathLibrary,以指定專案的名稱。 在 [解決方案名稱] 方塊中,輸入 StaticMath。 選擇 [建立] 按鈕以開啟 [Windows 桌面專案] 對話方塊。
在 [Windows 桌面專案] 對話方塊的 [應用程式類型] 下方,選取 [靜態程式庫 (.lib)]。
在 「其他選項」底下,如果已選取 「預先編譯標頭」 核取方塊,請將其清除。 選擇 「空白專案」。
按一下 [確定] 建立專案。
要在 Visual Studio 2017 建立靜態函式庫專案:
在功能表列上,選擇 [檔案]>[新增]>[專案]。
在新建 Project 對話框中,選擇已安裝>的 Visual C++>Windows 桌面。 在中央窗格中,選取 [Windows 桌面精靈]。
在名稱框中指定專案名稱,例如數學圖書館。 在解決方案名稱框中指定解決方案名稱,例如 StaticMath。 選擇 確定。
在 [Windows 桌面專案] 對話方塊的 [應用程式類型] 下方,選取 [靜態程式庫 (.lib)]。
在 其他選項 下方,如果已選取 預先編譯標頭 核取方塊,請將其清除。 選擇 「空白專案」。
按一下 [確定] 建立專案。
要在 Visual Studio 2015 建立靜態函式庫專案:
在功能表列上,選擇 [檔案]>[新增]>[專案]。
在新建 Project 對話框中,選擇已安裝>>範本Visual C++>Win32。 在中央窗格中,選取 [Win32 主控台應用程式] 。
在名稱框中指定專案名稱,例如數學圖書館。 在解決方案名稱框中指定解決方案名稱,例如 StaticMath。 選擇 確定。
在 Win32 應用程式精靈中,選擇 [下一步]。
在 [應用程式設定] 頁面的 [應用程式類型] 底下,選取 [靜態程式庫]。 在 「附加選項」中,清除 預先編譯的標頭 勾選框。 選擇 [完成] 以建立專案。
將類別加入靜態程式庫
要將類別加入靜態函式庫:
建立一個新類別的標頭檔。 在 方案總管 中,右鍵點擊 MathLibrary 以開啟專案的右鍵選單。 選擇新增>新項目。
在 新增項目 對話框中,選擇 Visual C++>Code。 在中間窗格中,選取 [標頭檔 (.h)] 。 為標頭檔指定名稱,例如 MathLibrary.h,然後選擇 新增。 近乎空白的標頭檔隨即顯示。
為名稱為
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); }; }要建立新類別的原始檔案,請在 方案總管 中開啟 MathLibrary 專案的右鍵選單,然後選擇新增>項目。
在「新增項目」對話框中,中央窗格選擇 C++ 檔案(.cpp)。 指定來源檔案名稱,例如 MathLibrary.cpp。 然後選擇 新增。 空白原始程式檔隨即顯示。
使用這個原始程式檔來實作類別
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; } }若要建置靜態程式庫,請從功能表列中選取 [建置]>[建置方案]。 建置後會建立一個靜態函式庫 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參考資料。
- 執行
建立參考靜態程式庫的 C++ 主控台應用程式
要建立一個參考 Visual Studio 靜態函式庫的 C++ 控制台應用程式:
在 方案總管 中,右鍵點擊頂端節點「Solution 'StaticMath'」即可開啟右鍵選單。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。
在對話方塊頂端,將 [專案類型] 篩選條件設定為 [主控台]。
從專案類型的篩選清單中,選擇 [主控台應用程式],然後選擇 [下一步]。 在下一頁輸入 MathClient 作為專案名稱。
選擇 建立 以建立客戶專案。
建立主控台應用程式之後,系統會自動為您建立空白程式。 原始程式檔的名稱與您先前選擇的名稱相同。 在此範例中,其名稱是
MathClient.cpp。
要建立一個參考 Visual Studio 2017 靜態函式庫的 C++ 主控台應用程式:
在 方案總管 中,右鍵點擊頂端節點「Solution 'StaticMath'」即可開啟右鍵選單。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。
在新增 Project 對話框中,選擇已安裝>Visual C++>Windows 桌面。 在中央窗格中,選取 [Windows 桌面精靈]。
在 [名稱] 方塊中指定專案的名稱,例如 MathClient。 選擇 [確定] 按鈕。
在 [Windows 桌面專案] 對話方塊的 [應用程式類型] 下方,選取 [主控台應用程式 (.exe)]。
在 其他選項 下,如果已選取 預先編譯標頭 核取方塊,請將其清除。
按一下 [確定] 建立專案。
建立主控台應用程式之後,系統會自動為您建立空白程式。 原始程式檔的名稱與您先前選擇的名稱相同。 在此範例中,其名稱是
MathClient.cpp。
要建立一個參考 Visual Studio 2015 靜態函式庫的 C++ 控制台應用程式:
在 方案總管 中,右鍵點擊頂端節點「Solution 'StaticMath'」即可開啟右鍵選單。 選擇 [加入]>[新增專案] 以開啟 [新增專案] 對話方塊。
在新增 Project 對話框中,選擇已安裝>Visual C++>Win32。 在中央窗格中,選取 [Win32 主控台應用程式] 。
在 [名稱] 方塊中指定專案的名稱,例如 MathClient。 選擇 [確定] 按鈕。
在 [Win32 應用程式精靈] 對話方塊中,選擇 [下一步]。
在 [應用程式設定] 頁面的 [應用程式類型] 下,確認已選取 [主控台應用程式]。 在「附加」選項中,清除預編譯標頭,然後選擇「Empty Project」。 選擇 [完成] 以建立專案。
若要將原始檔案加入空專案,請在 方案總管 中右鍵點擊 MathClient 專案的右鍵選單,然後選擇新增>項目。
在 新增項目 對話框中,選擇 Visual C++>Code。 在中間窗格中,選取 [C++ 檔 (.cpp)] 。 指定原始程式檔的名稱 (例如 MathClient.cpp),然後選擇 [加入] 按鈕。 空白原始程式檔隨即顯示。
在應用程式中使用靜態程式庫的功能
要在應用程式中使用靜態函式庫的功能:
在使用裡面的數學運算前,先參考靜態函式庫。 在 方案總管 開啟 MathClient 專案的右鍵選單,然後選擇新增>參考。
新增參考對話框會列出你可以參考的函式庫。 [專案] 索引標籤會列出目前方案中的專案,以及這些專案參考的任何程式庫。 打開 專案 標籤,選擇 數學圖書館,然後選擇 確定。
修改包含的目錄路徑以參考
MathLibrary.h標頭檔。 在 方案總管 中,右鍵點擊 MathClient 以開啟右鍵選單。 選擇 屬性 以開啟 MathClient 屬性頁面 對話框。在 MathClient 屬性頁面 對話框中,將 設定 值設為 所有配置。 將 月台 設為 所有月台。
選取 [設定屬性]>C/C++>[一般] 屬性頁面。 在 [其他 Include 目錄] 屬性中,指定 MathLibrary 目錄的路徑,或瀏覽以尋找該路徑。
若要瀏覽目錄路徑:
請開啟 [其他 Include 目錄] 屬性值下拉式清單,然後選擇 [編輯]。
在 「額外包含目錄 」對話框中,雙擊文字框頂端。 然後選擇行尾的省略符號按鈕 (...)。
在 「選擇目錄 」對話框中,往上移動一層,然後選擇 MathLibrary 目錄。 然後選擇 [選取資料夾] 按鈕以儲存您的選取項目。
在 「額外包含目錄 」對話框中,選擇 確定 按鈕。
在 「屬性頁面 」對話框中,選擇 確定 按鈕以儲存你對專案的變更。
您現在可以在此應用程式中使用
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; }若要建置可執行檔,請從功能表列上選擇 [建置]>[建置方案]。
執行應用程式
要執行這個應用程式:
確保將 MathClient 選取為預設專案。 要選擇它,請在 方案總管 中右鍵點擊 MathClient 開啟右鍵選單,然後選擇設定為 StartUp Project。
在功能表列上,選擇 偵錯>啟動但不偵錯 來執行專案。 輸出應與以下相似:
a + b = 106.4 a - b = -91.6 a * b = 732.6 a / b = 0.0747475