MySQL 连接器/C++ 8.0 开发人员指南  / 第 5 章构建连接器/C++ 应用程序  /  5.2 使用 Microsoft Visual Studio 在 Windows 上构建连接器/C++ 应用程序

5.2 使用 Microsoft Visual Studio 在 Windows 上构建连接器/C++ 应用程序

本节介绍如何使用 Microsoft Visual Studio 为 Windows 构建连接器/C++ 应用程序。有关一般的应用程序构建信息,请参阅 第 5.1 节,“构建连接器/C++ 应用程序:一般注意事项”

使用 Microsoft Windows 的开发人员必须满足以下要求:

  • 构建连接器/C++ 应用程序需要 Microsoft Visual Studio 2015。

  • 您的应用程序应使用与 Connector/C++ 相同的链接器配置。例如,使用/MD/MDd/MT或 之一/MTd

将连接器/C++ 链接到应用程序

Connector/C++ 可作为动态或静态库与您的应用程序一起使用。本节介绍如何将库链接到您的应用程序。

链接动态库

要使用动态库文件(.dll 扩展名),请将您的应用程序与.lib 导入库链接。在运行时,应用程序必须有权访问该.dll库。

下表指示了哪些导入库和动态库文件可用于连接器/C++。LIB 表示连接器/C++ 安装库路径名。

表 5.1 连接器/C++ 导入库和动态库名称

导入库 动态库
LIB/mysqlcppconn.lib LIB/mysqlcppconn.dll

链接静态库

要使用静态库文件(.lib 扩展名),请将您的应用程序与库链接。

静态库名称为 LIB/mysqlcppconn-static.lib,其中LIB表示Connector/C++安装库路径名。

使用 Microsoft Visual Studio 构建连接器/C++ 应用程序

构建应用程序以使用动态库或静态库的初始步骤是相同的​​。一些额外的步骤会有所不同,具体取决于您构建的应用程序是使用 动态库 还是 静态 库。

  1. 在 Visual Studio 中启动一个新的 Visual C++ 项目。

  2. 在工具栏上的构建配置下拉列表中,将配置从默认选项 Debug更改为Release

    连接器/C++ 和应用程序构建配置必须匹配

    因为应用程序构建配置必须与其使用的 Connector/C++ 相匹配,所以在使用 Oracle 构建的Connector/C++ 时需要Release,它是在发布配置中构建的。动态链接时,即使连接器库是在发布模式下构建的,也可以在调试模式下构建代码。但是,在这种情况下,将无法在调试会话期间进入连接器代码。为了能够做到这一点,或者在静态链接到连接器的同时在调试模式下构建,您必须使用调试配置自己从源代码构建连接器/C++。

  3. 从主菜单中选择项目属性。这也可以使用热键ALT + F7访问。

  4. Configuration Properties下,打开树视图。

  5. 在树视图中 选择C/C++General 。

  6. Additional Include Directories 文本字段中,添加include/Connector/C++ 目录(它应该位于 Connector/C++ 安装目录中)。如果构建应用程序需要 Boost,还要添加 Boost 库的根目录(请参阅 第 5.1 节“构建连接器/C++ 应用程序:一般注意事项”)。

  7. 在树视图中,打开LinkerGeneralAdditional Library Directories

  8. Additional Library Directories 文本字段中,添加 Connector/C++ 库目录(它应该位于 Connector/C++ 安装目录中)。库目录名称以lib64(对于 64 位版本)或lib(对于 32 位版本)结尾。

其余步骤取决于您构建的应用程序是使用 Connector/C++ 动态库还是静态库。

动态构建

如果您要构建应用程序以使用连接器/C++ 动态库,请执行以下步骤:

  1. 打开Linker, 在Property Pages对话框 中输入。

  2. 将适当的导入库名称添加到 附加依赖项文本字段中(请参阅 将连接器/C++ 链接到应用程序)。

  3. 选择要链接到的 C++ 运行时库。在 Property Pages对话框中,在树视图中打开 C++Code Generation ,然后 按照以下规则 为Runtime Library选择适当的选项:

    • 对于 1.1.9 版及更高版本/MD:通过选择编译器选项链接到 C++ 运行时库的动态版本此外,运行客户端应用程序的目标主机必须安装 Visual C++ Redistributable for Visual Studio。所需版本是 VC++ Redistributable 2015 for Connector/C++ 1.1.11 及更高版本(商业和社区构建),VC++ Redistributable 2013 for Connector/C++ 1.1.11 之前的版本(仅限社区构建)。

    • 对于 1.1.8 版及之前/MD的版本:通过选择编译器选项 链接到 C++ 运行时库的动态版本

    如果您使用的是 Oracle 构建的连接器/C++,请不要使用 or选项/MTd/MDd有关解释,请参阅此讨论: Connector/C++ and Application Build Configuration Must Match

  4. 将适当的动态库复制到与应用程序可执行文件相同的目录(请参阅 将连接器/C++ 链接到应用程序)。或者,使用扩展PATH环境变量SET PATH=%PATH%;C:\path\to\cpp,或将动态库复制到 Windows 安装目录,通常是 C:\windows.

    动态库必须与应用程序可执行文件位于同一目录中,或者位于系统路径中的某个位置,以便应用程序可以在运行时访问 Connector/C++ 动态库。

静态构建

如果您正在构建应用程序以使用静态库,请按照以下步骤操作:

  1. 打开Linker, 在Property Pages对话框 中输入。

  2. 将适当的静态库名称添加到 附加依赖项文本字段中(请参阅 将连接器/C++ 链接到应用程序)。

  3. 要编译与连接器库静态链接的代码,请定义一个宏来调整头文件中的 API 声明以供静态库使用。默认情况下,定义宏以声明与调用 DLL 的应用程序兼容的函数。

    ProjectProperties树视图中,在 C++下的Preprocessor下,将适当的宏输入到Preprocessor Definitions文本字段中:将 CPPCONN_PUBLIC_FUNC宏定义为空字符串。为确保这一点,请将宏定义为 CPPCONN_PUBLIC_FUNC=,而不是 CPPCONN_PUBLIC_FUNC

  4. 选择要链接到的 C++ 运行时库。在 Property Pages对话框中,在树视图中打开 C++Code Generation ,然后 按照以下规则 为Runtime Library选择适当的选项:

    • 对于 1.1.9 版及更高版本/MD:通过选择编译器选项链接到 C++ 运行时库的动态版本此外,运行客户端应用程序的目标主机必须安装 Visual C++ Redistributable for Visual Studio。所需版本是 VC++ Redistributable 2015 for Connector/C++ 1.1.11 及更高版本(商业和社区构建),VC++ Redistributable 2013 for Connector/C++ 1.1.11 之前的版本(仅限社区构建)。

    • 对于 1.1.8 版及之前/MD的版本:通过选择编译器选项 链接到 C++ 运行时库的动态版本

    如果您使用的是 Oracle 构建的连接器/C++,请不要使用 or选项/MTd/MDd有关解释,请参阅此讨论: Connector/C++ and Application Build Configuration Must Match