標籤:
目前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下的庫檔案、例子工程了
Visual Studio 2015編譯64位MySQL Connector/C++