本節說明建置 Connector/C++ 應用程式時,特定於 Microsoft Windows 的方面。如需一般應用程式建置資訊,請參閱 第 5.1 節「建置 Connector/C++ 應用程式:一般考量」。
在 Windows 上,應用程式可以使用不同的建置配置來建置,這會決定最終可執行檔使用的 C++ 執行階段程式庫類型
應用程式可以建置為 32 位元或 64 位元模式。
應用程式可以建置為發行或偵錯模式。
您可以在動態執行階段程式庫 (
/MD
連結器選項) 或靜態執行階段程式庫 (/MT
連結器選項) 之間選擇。不同版本的 MSVC 編譯器也會使用不同版本的執行階段程式庫。
若要建置 Connector/C++ 應用程式,使用 Windows 的開發人員必須滿足以下條件
需要可接受版本的 Microsoft Visual Studio。
應用程式應使用與建置 Connector/C++ 時相同的建置配置。建置配置包含建置模式 (發行模式或偵錯模式) 和連結器選項 (例如,
/MD
或/MDd
)。執行用戶端應用程式的目標主機必須安裝可接受版本的 Visual C++ Redistributable for Visual Studio。
如需可接受版本的 Visual Studio 和 VC++ Redistributable 的相關資訊,請參閱 平台支援和先決條件。
以下章節提供關於建置 Connector/C++ 應用程式的數個方面的其他詳細資訊
使用相容的編譯器版本來建置應用程式和 Connector/C++ 很重要。使用與建置 Connector/C++ 時相同的建置配置來建置應用程式也很重要。也就是說,應用程式應使用相同的建置模式和連結器選項,以確保連接器和應用程式使用相同的執行階段程式庫。
下表顯示每個建置模式和執行階段程式庫組合適用的連結器選項。它也顯示每個組合是否有可從 Oracle 取得的 Connector/C++ 二進位套件。(如果沒有,您必須自己從原始碼建置 Connector/C++)
表 5.1 每個建置模式和執行階段程式庫的 Connector/C++ 連結器選項
建置模式 | 執行階段程式庫 | 連結器選項 | 可用的二進位套件 |
---|---|---|---|
發行 | 動態 | /MD |
是 |
偵錯 | 動態 | /MDd |
是 |
發行 | 靜態 | /MT |
否 (從原始碼建置) |
偵錯 | 靜態 | /MTd |
否 (從原始碼建置) |
可從 Oracle 取得的標準 Connector/C++ 二進位套件是以發行模式建置的。如果您安裝此類套件,請以發行模式建置應用程式以符合。以偵錯模式建置的 Oracle 套件也可用。若要以偵錯模式建置應用程式,您必須安裝 Oracle 建置的以偵錯模式建置的 Connector/C++ 套件,或自行以偵錯模式從原始碼建置 Connector/C++。
Connector/C++ 二進位發行版本可以 64 位元或 32 位元套件的形式取得,這些套件會將程式庫儲存在名為 lib64
或 lib
的目錄下。套件名稱和某些程式庫檔案及目錄名稱也包含 vs
。這些名稱中的 NN
vs
值取決於用於建置程式庫的 MSVC 工具鏈版本。此慣例允許在同一系統上使用使用不同版本的 MSVC 建置的程式庫。NN
vs
值代表用於建置程式庫的 MSVC 工具鏈的主要版本。目前是 NN
vs14
,這是 MSVC 2015 到 2019 使用的工具鏈。
Connector/C++ 二進位套件包含使用動態執行階段程式庫以發行模式 (/MD
) 或偵錯模式 (/MDd
) 建置的程式庫。Connector/C++ 程式庫與 MSVC 2019 和 2017 相容,且使用這些程式庫的程式碼可以使用 MSVC 2019 或 2017 搭配適當的連結器選項 (也就是說,發行模式為 /MD
,偵錯模式為 /MDd
) 來建置。若要使用不同的連結器選項 (/MT
或 /MTd
) 建置程式碼,請先使用該選項從原始碼建置 Connector/C++ (請參閱 第 4.3 節「從原始碼安裝 Connector/C++」),然後使用相同選項建置應用程式。
編譯器版本相容性的一個例外是,若要使用靜態 JDBC 舊版連接器建置應用程式,則需要 MSVC 2019;2017 無法運作。
Connector/C++ 可作為動態或靜態程式庫與您的應用程式搭配使用。您選擇的程式庫決定了所需的程式庫檔案,而這些檔案在 Connector/C++ 套件中的位置取決於套件是以發行模式還是偵錯模式建置。程式庫檔案位於程式庫目錄下,如前所述,64 位元套件為 lib64
,32 位元套件為 lib
。將此目錄表示為 LIB
。下表顯示每個類型的程式庫 (包括與動態程式庫結合使用的匯入程式庫) 的程式庫檔案所在目錄。
表 5.2 Connector/C++ 程式庫檔案目錄
程式庫類型 | 程式庫檔案目錄 (發行建置) | 程式庫檔案目錄 (偵錯建置) |
---|---|---|
動態程式庫 |
|
|
匯入程式庫 |
|
|
靜態程式庫 |
|
|
對於動態連結,下表指出要使用的動態和匯入程式庫檔案。
表 5.3 每個連接器的 Connector/C++ 動態和匯入程式庫檔案
連接器 | 動態程式庫檔案 | 匯入程式庫檔案 |
---|---|---|
X DevAPI、X DevAPI for C | mysqlcppconn8-2-vs14.dll |
mysqlcppconn8.lib |
JDBC | mysqlcppconn-7-vs14.dll |
mysqlcppconn.lib |
對於 X DevAPI 或 X DevAPI for C 連接器,請使用名為 mysqlcppconn8-2-vs14.dll
的動態程式庫檔案,以及來自匯入程式庫目錄名為 mysqlcppconn8.lib
的匯入程式庫檔案。動態程式庫名稱中的 2
是主要的 ABI 版本號碼。(這有助於將具有舊 ABI 的相容性程式庫與具有不同 ABI 的新程式庫一起使用)。您系統上安裝的程式庫可能在其檔案名稱中具有不同的 ABI 版本。
對於舊版 JDBC 連接器,請使用名為 mysqlcppconn-7-vs14.dll
的動態程式庫檔案,以及來自匯入程式庫目錄名為 mysqlcppconn.lib
的匯入程式庫檔案。
對於靜態連結,下表指出要使用的靜態程式庫檔案。
表 5.4 每個連接器的 Connector/C++ 靜態程式庫檔案
連接器 | 靜態程式庫檔案 |
---|---|
X DevAPI、X DevAPI for C | mysqlcppconn8-static.lib |
JDBC | mysqlcppconn-static.lib |
對於 X DevAPI 或 X DevAPI for C 連接器,請使用來自靜態程式庫目錄名為 mysqlcppconn8-static.lib
的靜態程式庫檔案。
對於舊版 JDBC 連接器,請使用來自靜態程式庫目錄名為 mysqlcppconn-static.lib
的靜態程式庫檔案。
在建置使用 Connector/C++ 程式庫的程式碼時,請使用以下指南在專案配置中設定建置選項
作為額外的 include 目錄,請指定
$MYSQL_CPPCONN_DIR/include
。作為額外的程式庫目錄,請指定包含應用程式必須連結到的程式庫的目錄,如 表 5.2 「Connector/C++ 程式庫檔案目錄」所示。例如,若要指定在發行模式下建置的匯入或靜態程式庫目錄,請使用
$MYSQL_CONCPP_DIR/lib64/vs14
(適用於 64 位元程式庫) 或$MYSQL_CONCPP_DIR/lib/vs14
(適用於 32 位元程式庫)。若要在偵錯模式下建置,請將vs14
變更為vs14/debug
。若要使用動態程式庫檔案 (
.dll
副檔名),請將您的應用程式與.lib
匯入程式庫連結:針對連結器選項使用mysqlcppconn8.lib
,或針對舊版程式碼使用mysqlcppconn.lib
。若要使用靜態程式庫檔案(副檔名為
.lib
),請將您的應用程式與該程式庫連結:mysqlcppconn8-static.lib
,或是舊版程式碼則使用mysqlcppconn-static.lib
。
對於靜態連結,應用程式也必須與所需 OpenSSL 程式庫的匯入程式庫連結。如果連接器是從 Oracle 提供的二進位套件安裝,這些程式庫會位於主程式庫目錄($MYSQL_CONCPP_DIR/lib64
或 $MYSQL_CONCPP_DIR/lib
)下的 vs14
子目錄中,而對應的 OpenSSL .dll
程式庫則位於主程式庫目錄中。
使用連接器動態程式庫的 Windows 應用程式必須能夠在執行時找到它,以及其相依性(例如 OpenSSL)。常見的配置方式是將所有必要的 DLL 複製到與應用程式執行檔相同的目錄中。
若要使用 Microsoft Visual Studio 建置 Connector/C++ 應用程式,請依照以下步驟進行
在 Visual Studio 中啟動一個新的 Visual C++ 專案。
-
設定所需的包含路徑。
從主選單中,選取組態屬性下,開啟樹狀檢視。在樹狀檢視中選取 、一般。
、 。也可以使用熱鍵 + 存取。在在其他包含目錄文字欄位中
新增 Connector/C++ 的
include/
目錄。這個目錄應該位於 Connector/C++ 安裝目錄內。如果建置應用程式需要 Boost,也請新增 Boost 程式庫根目錄。(請參閱第 5.1 節,「建置 Connector/C++ 應用程式:一般考量」。)
-
設定程式庫位置。
在樹狀檢視中,開啟連結器、一般、其他程式庫目錄。
在其他程式庫目錄文字欄位中,新增 表 5.2,「Connector/C++ 程式庫檔案目錄」 中指定的 Connector/C++ 匯入或靜態程式庫目錄。為發行和偵錯建置設定適當的路徑。
注意若要在偵錯模式下建置,必須安裝 Connector/C++ 偵錯套件。
-
設定要使用的連接器程式庫。
在屬性頁對話方塊中開啟連結器、輸入。
若要使用 Connector/C++ 動態程式庫建置,請輸入匯入程式庫名稱:
mysqlcppconn8.lib
,或是舊版應用程式則使用mysqlcppconn.lib
。若要使用 Connector/C++ 靜態程式庫建置,請輸入靜態程式庫名稱:
mysqlcppconn8-static.lib
,或是舊版應用程式則使用mysqlcppconn-static.lib
。注意通用 Linux 套件不包含 Connector/C++ 靜態程式庫。
-
定義靜態連結的巨集。
若要編譯與連接器程式庫靜態連結的程式碼,您必須定義一個巨集,以調整標頭檔案中的 API 宣告,使其與靜態程式庫一起使用。預設情況下,該巨集為未定義,以便宣告函式與呼叫 DLL 的應用程式相容。
在專案、屬性樹狀檢視中的C++、前置處理器下,在 文字欄位中輸入適當的巨集。
對於使用 X DevAPI、C 語言的 X DevAPI 或(從 Connector/C++ 8.0.16 開始)舊版 JDBC API 的應用程式,請定義
STATIC_CONCPP
巨集。重點在於您必須定義它;值並不重要。例如:-DSTATIC_CONCPP
在 Connector/C++ 8.0.16 之前,對於使用舊版 JDBC API 的應用程式,請將
CPPCONN_PUBLIC_FUNC
巨集定義為空字串。為了確保這一點,請將該巨集定義為CPPCONN_PUBLIC_FUNC=
,而不是CPPCONN_PUBLIC_FUNC
。
執行用戶端應用程式的目標主機必須安裝 Visual Studio 的 Visual C++ 可轉散發套件。有關哪些 VC++ 可轉散發版本可接受的資訊,請參閱平台支援和先決條件。
如果您的程式碼使用 Connector/C++ 動態程式庫,則該程式庫必須存在於執行應用程式的目標主機上。將適當的 Connector/C++ 動態程式庫複製到與應用程式執行檔相同的目錄中(請參閱將 Connector/C++ 連結到應用程式)。或者,使用
SET PATH=%PATH%;C:\
擴充path
\to
\cpp
PATH
環境變數,或將動態程式庫複製到 Windows 安裝目錄(通常是C:\windows
)。如果您的程式碼使用 Connector/C++ 靜態程式庫,則必須在執行應用程式的目標主機上找到所需的 OpenSSL 程式庫。對於 Connector/C++ 二進位發行版本,OpenSSL
.dll
程式庫存在於主程式庫目錄($MYSQL_CONCPP_DIR/lib64
或$MYSQL_CONCPP_DIR/lib
)中。將它們複製到與應用程式執行檔相同的位置,或複製到系統PATH
中列出的某些目錄中。