MySQL Connector C ++ 64bit从Visual Studio 2012中的源代码构建

时间:2013-11-29 08:33:50

标签: c++ mysql visual-studio-2012 64-bit mysql-connector

我正在尝试从 64位架构的 Visual Studio 2012 中的源代码构建 mySQL Connector C ++ 。 我了解这取决于一些 boost 标头文件和 C连接器。 运行 CMake 会生成一个项目文件,但该项目文件无法编译,因为可能需要对包含文件执行一些非常混乱的错误,以及更大的警告列表。官方网站没什么帮助。

有人可以列出成功编译C ++连接器的所有步骤吗?

2 个答案:

答案 0 :(得分:5)

为了构建它,您需要具备以下条件:

  1. 您需要安装MySQL服务器或MySQL C Connector
  2. 已安装Boost C++ libraries或拥有源文件。请注意,不需要构建boost,因为您只需要头文件。
  3. 安装了CMake。安装CMake时,它会询问您是否要将其包含在PATH变量中,您应该选择“是”以便以后更轻松地使用它。
  4. 如果您有三个可用,请打开 VS2012 x64 Native Tools命令提示符,然后从MySQL C ++ Connector的源根目录中发出以下命令:

    set MYSQL_DIR=c:\PROGRA~1\MySQL\MYSQLC~1.1
    cmake -G "Visual Studio 11 Win64" ^
          -DBOOST_ROOT:STRING=C:\Users\user\DOWNLO~1\BOOST_~1\BOOST_~1 ^
          -DMYSQL_LIB_DIR:STRING=c:\PROGRA~1\MySQL\MYSQLC~1.1\LIB
    devenv.com MySQLCPPCONN.sln /build Release
    

    第一个命令定义MYSQL_DIR变量,指向安装MySQL服务器或MySQL C连接器。 第二个命令调用cmake来准备一个64位的VS项目。 MYSQL_LIB_DIR变量似乎存在问题而且没有生成,所以我们需要手动定义它。 MYSQL_LIB_DIR的值MYSQL_DIR\LIB结尾。 第三个命令是可选的,它将在不打开VS的情况下从命令提示符构建项目。

    建议您使用DOS路径作为变量。 为此,请导航到要转换为DOS路径的目录并调用for %I in (.) do echo %~sI。它会为您提供转换后的路径。

答案 1 :(得分:4)

这是一项非常艰巨的任务,我花了很多时间搞清楚这一点。

这里有两个问题:

  1. 他们提供的C ++连接器和MySQL库是使用Visual Studio 2010生成的。因此我们无法在VS2012下使用它们(它会出现版本不匹配错误)

  2. 他们还没有指定编译这些库的确切编译器选项。如果我们的编译器设置不同,我们会遇到很多(尤其是与链接器相关的)错误。

  3. 考虑到这些事实,唯一的方法就是建立自己的这些库。构建MySQL很快,但构建连接器并不复杂。

    以下是我分享的步骤。在我的情况下,我想静态地将这些库与我的项目链接,因此我相应地构建了这些库。您可能希望根据需要在必要时进行相关更改。

    在继续执行这些步骤之前,请在您的系统上下载并安装CMake。

    构建MySQL服务器的步骤:

    1. 下载MySQL源代码。提取它们。在命令提示符下进入解压缩的文件夹。

    2. 创建BLD forder

    3. 通过命令提示符进入BLD文件夹

    4. 运行

      cmake .. -G "Visual Studio 11 2012 Win64"
      

      它将创建MySQL.sln

    5. 在Visual Studio中打开MySQL.sln并仅构建' mysqlclient'库(因为应用程序只需要这个)

    6. 这将在mysql-5.6.24 \ BLD \ libmysql \<中构建库配置>我们在项目中链接的文件夹。

      构建C ++连接器的步骤:

      1. 下载mysql-connector-c ++源代码。提取它。在命令提示符下进入解压缩的文件夹。

      2. 创建BLD forder

      3. 通过命令提示符进入BLD文件夹

      4. 运行此命令(确保在此之前我们已经在发布和调试模式下构建了MySQL服务器。还要确保我们已经下载了Boost源代码)

        cmake .. -DMYSQL_INCLUDE_DIR="..\..\mysql-5.6.24\include" -DMYSQL_LIB_DIR:STRING="..\mysql-5.6.24\BLD\libmysql\Release" -DBOOST_ROOT:STRING="..\Boost\boost_1_54_0" -DMYSQL_CLIENT_STATIC_LINKING=1 -G "Visual Studio 11 2012 Win64" 
        

        它将创建MYSQLCPPCONN.sln

      5. 在Visual Studio中打开MYSQLCPPCONN.sln并更改为' mysqlcppconn-static'项目:

        一个。在C / C ++下 - >一般 - >其他包含目录(适用于所有配置)

          nativeapi;..\;..\..\;..\cppconn;..\..\cppconn;..\..\..\mysql-5.6.24\include;..\..\..\mysql-5.6.24\BLD\include;..\..\..\Boost\boost_1_54_0
        

        B中。在Code Genaration中,将运行时库更改为多线程(调试或非调试取决于配置)和NOT DLL

        ℃。在图书馆员之下 - >所有选项都保留"其他选项"和"忽略特定的默认库"为空(对于所有配置)

        d。在图书馆员之下 - >一般保持"忽略特定的默认库"空白(适用于所有配置)

      6. 仅限构建' mysqlcppconn-static'库项目(因为应用程序只需要连接到MySQL服务器)

      7. 这将在mysql-connector-c ++ - 1.1.5 \ BLD \ driver \<中生成库配置>我们在项目中链接的文件夹。