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