vs2015編譯mysql c++ connector


目前MySQL Connector/C++的binary版本最高只支持VS2008,VS2015需要下載源碼自行編譯。

1.CMAKE

官網下載最新的穩定版本

把bin目錄添加到環境變量PATH中

 

2.Boost

同樣到官網下載最新的穩定版本,可以下載編譯好的的版本

 

3.MySQL客戶端庫

MySQL客戶端庫頭文件在MySQL目錄下的include目錄中,可以下載mysql的windows版本zip安裝包,只解壓不安裝。

 

4.下載MySQL connector/C++源碼

http://dev.mysql.com/downloads/connector/cpp/

在“select platform”中選擇“Source Code”下載解壓

 

5.生成VS解決方案文件

(1)x64

開啟一個cmd窗口(管理員權限),進入解壓出來的MySQL Connector根目錄

執行

cmake -G "Visual Studio 14 2015 Win64" -DBOOST_ROOT:STRING=BOOST_X64_DIR -DMYSQL_DIR:STRING=MYSQL_X64_DIR

其中:

  1. Win64非常重要,否則生成的就是x86的解決方案。
  2. -DBOOST_ROOT:STRING聲明boost庫的根目錄,-DMYSQL_DIR:STRING聲明mysql的安裝路徑,根據自己的配置設置BOOST_X64_DIR和MYSQL_X64_DIR。

 (2)X32

開啟一個cmd窗口(管理員權限),進入解壓出來的MySQL Connector根目錄

執行

cmake -G "Visual Studio 14 2015" -DBOOST_ROOT:STRING=BOOST_X32_DIR -DMYSQL_DIR:STRING=MYSQL_X32_DIR

其中:

  1. -DBOOST_ROOT:STRING聲明boost庫的根目錄,-DMYSQL_DIR:STRING聲明mysql的安裝路徑,根據自己的配置設置BOOST_X32_DIR和MYSQL_X32_DIR。

6.編譯MySQL Connector

在MySQL Connector根目錄,可以看到生成的.sln文件,雙擊打開可以看到幾十個工程文件,除了庫還包括例子、測試等

在“解決方案資源管理器”窗口,找到 mysqlcppconn工程,右擊,選擇“生成”

失敗……

(1) 發現結構體timespec重定義,找到頭文件my_global.h,在其開頭加入

#define HAVE_STRUCT_TIMESPEC

(2)在“輸出”窗口,選擇輸出來源為“生成”,CTRF+F,搜索“error”,可以看到

>C:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt\stdio.h(1927): fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration

其前一行是

2>  d:\bin\mysql-connector-c++-1.1.6\driver\nativeapi/mysql_private_iface.h(48): note: 參見“snprintf”的前一個定義

雙擊這一行,定位到mysql_private_iface.h的48行,注釋掉

//#if ( defined(_WIN32) || defined(_WIN64) ) && !defined(snprintf)
//#define snprintf _snprintf
//#endif

在“輸出”窗口,選擇輸出來源為“生成”,點擊“全部消除”,再次生成工程

(3)失敗……又一次,再看生成信息,同樣的問題

再次雙擊定位到m_config.h的516行,注釋之

//#define snprintf _snprintf

7.附上編譯之后x32版本的連接庫下載地址

  百度雲

8.感謝

  參考了 謝小軍 的 csdn博客,感謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM