目前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
其中:
- Win64非常重要,否則生成的就是x86的解決方案。
- -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
其中:
- -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博客,感謝!
