MySQL Connector C++ 64bit build from source in Visual Studio 2012

不羁岁月 提交于 2019-12-06 05:11:21

问题


I am trying to build the mySQL Connector C++ from source in Visual Studio 2012 for the 64-bit architecture. I understand that it depends on some boost header files and the C connector. Running CMake produces a project file, but that project file doesn't compile because of a big list of very confusing errors which probably have to do something with the include files, and an even bigger list of warnings. The official site is of little help.

Could some one please list all the steps in successfully compiling the C++ Connector?


回答1:


In order to build it you need to have the following:

  1. You need to have installed either the MySQL server or the MySQL C Connector.
  2. Have installed the Boost C++ libraries or have the source files for it. Please note that there is not need to build boost as you only need the header files.
  3. Have CMake installed. When installing CMake it will ask you if you want it included in the PATH variable, you should select yes to make it easier later to use it.

Once you have all three available, open VS2012 x64 Native Tools Command Prompt and from the source root directory of the MySQL C++ Connector you need to issue the following:

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

The first command defines the MYSQL_DIR variable that points to the installation of the MySQL server or the MySQL C Connector. The second command call cmake to prepare a VS project that will be 64bit. There seems to be a problem with the MYSQL_LIB_DIR variable and it does not get generated, so we need to define it manually. MYSQL_LIB_DIR has the value of MYSQL_DIR ending with a \LIB. Third command is optional, it will build the project from command prompt without opening VS.

It is recommended that you use the DOS paths for the variables. To do that, navigate to the directory you want to convert to DOS path and call for %I in (.) do echo %~sI. It will give you the converted path.




回答2:


It's really tough task and I've spent lot of hours figuring this out.

There are two issues here:

  1. C++ Connector and MySQL libraries they have provided have been generated with Visual Studio 2010. Hence we can not use them as it is under VS2012 (It gives version mismatch error)

  2. They also have not specified exact compiler options under which they have compiled these libraries. If our compiler settings are different, we'll end up in lots and lots of (especially linker related) errors.

Considering these facts, the only way is to build ourselves these libraries. Building MySQL is quick but building connector is little complicated.

Here are steps I am sharing. In my case I wanted to link these libraries statically with my project so I built these libraries accordingly. You may want to make relevant changes wherever necessary as per your need.

Before continuing with these steps, please download and install CMake on your system.

Steps to build MySQL server:

  1. Download MySQL source. Extract them. Go in extracted folder in command prompt.

  2. Create BLD forder

  3. Go in BLD folder through command prompt

  4. Run

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

    It will create MySQL.sln

  5. Open MySQL.sln in Visual Studio and build only 'mysqlclient' library (as only this would be needing by application)

This will build libraries in mysql-5.6.24\BLD\libmysql\< Configuration > folder which we link in our project.

Steps to build C++ connector:

  1. Download mysql-connector-c++ source. Extract it. Go in extracted folder in command prompt.

  2. Create BLD forder

  3. Go in BLD folder through command prompt

  4. Run this command (Make sure we've built MySQL server before this, in Release and Debug mode. Also make sure we've downloaded Boost sources)

    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" 
    

    It will create MYSQLCPPCONN.sln

  5. Open MYSQLCPPCONN.sln in Visual Studio and make changes to 'mysqlcppconn-static' project:

    A. Under C/C++ -> General -> Additional Include Directories put this (for All Configurations)

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

    B. In Code Genaration, change Runtime Library to Multithreaded (Debug or non-Debug depends on configuration) and NOT DLL

    C. Under Librarian -> All Options keep "Additional Options" and "Ignore Specific Default Libraries" to blank (for All Configurations)

    D. Under Librarian -> General keep "Ignore Specific Default Libraries" to blank (for All Configurations)

  6. Build only 'mysqlcppconn-static' library project (as only this would be needing by application to connect to MySQL server)

This would generate library in mysql-connector-c++-1.1.5\BLD\driver\< Configuration > folder which we link in our project.



来源:https://stackoverflow.com/questions/20281360/mysql-connector-c-64bit-build-from-source-in-visual-studio-2012

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!