目前MySQL Connector/C++的binary版本最高只支持VS2008,VS2015需要下載源碼自行編譯。
盡管MySQL手冊提供了信息,但在編譯過程中還是有不少細節需要注意。
CMAKE
到官網下載最新的穩定版本
把bin目錄添加到環境變量PATH中
Boost
同樣到官網下載最新的穩定版本
MySQL客戶端庫
MySQL客戶端庫頭文件在MySQL目錄下的include目錄中
是的,編譯connector還需要下載一個MySQL Server
添加環境變量MYSQL_DIR,值為MySQL Server根目錄
cmake會到MYSQL_DIR/include下查找頭文件
下載MySQL connector/C++源碼
http://dev.mysql.com/downloads/connector/cpp/
在“select platform”中選擇“Source Code”
下載解壓
生成VS解決方案文件
開啟一個cmd窗口,進入解壓出來的MySQL Connector根目錄
執行
cmake -G "Visual Studio 14 2015 Win64" -DBOOST_ROOT:STRING=d:/bin/boost159
其中:
- Win64非常重要,否則生成的就是x86的解決方案。
- -DBOOST_ROOT:STRING聲明boost庫的根目錄,根據自己的配置設置它的值。
編譯MySQL Connector
在MySQL Connector根目錄,可以看到生成的.sln文件,雙擊打開
幾十個工程文件,除了庫還包括例子、測試等
在“解決方案資源管理器”窗口,找到 mysqlcppconn工程,右擊,選擇“生成”
失敗……
在“輸出”窗口,選擇輸出來源為“生成”,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
在“輸出”窗口,選擇輸出來源為“生成”,點擊“全部消除”,再次生成工程
失敗……又一次
再看生成信息,同樣的問題
再次雙擊定位到m_config.h的516行,注釋之
//#define snprintf _snprintf
再生成
閃過幾屏的警告信息后,編譯成功
全部編譯
在“解決方案資源管理器”窗口,右擊解決方案, 選擇“生成解決方案”
最后成功十多個工程,失敗十多個工程,不用理會失敗的
這時候就得到VS2015下的庫文件、例子工程了