![](/img/trans.png)
[英]Visual Studio - C++ - build and run app as 32bit or 64bit - load DLL from appropripate ProgramFiles dir
[英]MySQL Connector C++ 64bit build from source in Visual Studio 2012
我正在嘗試從64位體系結構的Visual Studio 2012中的源代碼構建mySQL Connector C ++ 。 我知道這取決於一些boost頭文件和C連接器。 運行CMake會生成一個項目文件,但該項目文件無法編譯,因為可能需要對包含文件執行一些非常混亂的錯誤,以及更大的警告列表。 官方網站沒什么幫助。
有人可以列出成功編譯C ++連接器的所有步驟嗎?
為了構建它,您需要具備以下條件:
PATH
變量中,您應該選擇yes以便以后使用它更容易。 一旦有了所有三個可用,打開VS2012 x64 Native Tools命令提示符,並從MySQL C ++ Connector的源根目錄中,您需要發出以下命令:
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
第一個命令定義MYSQL_DIR
變量,該變量指向MySQL服務器或MySQL C Connector的安裝。 第二個命令調用cmake來准備一個64位的VS項目。 MYSQL_LIB_DIR
變量似乎存在問題並且沒有生成,因此我們需要手動定義它。 MYSQL_LIB_DIR
的值為MYSQL_DIR
,以\\LIB
結尾。 第三個命令是可選的,它將從命令提示符構建項目而不打開VS.
建議您使用DOS路徑作為變量。 為此,導航到要轉換為DOS路徑的目錄,並for %I in (.) do echo %~sI
調用for %I in (.) do echo %~sI
。 它會為您提供轉換后的路徑。
這真是一項艱巨的任務,我花了很多時間搞清楚這一點。
這里有兩個問題:
他們提供的C ++ Connector和MySQL庫都是使用Visual Studio 2010生成的。因此我們不能在VS2012下使用它們(它會給出版本不匹配錯誤)
他們還沒有指定編譯這些庫的確切編譯器選項。 如果我們的編譯器設置不同,我們最終會遇到很多(特別是鏈接器相關的)錯誤。
考慮到這些事實,唯一的方法是為這些庫建立自己。 構建MySQL很快,但構建連接器並不復雜。
以下是我要分享的步驟。 在我的情況下,我想靜態地將這些庫與我的項目鏈接,因此我相應地構建了這些庫。 您可能希望根據需要在必要時進行相關更改。
在繼續執行這些步驟之前,請在您的系統上下載並安裝CMake。
構建MySQL服務器的步驟:
下載MySQL源代碼。 提取它們。 在命令提示符下進入解壓縮文件夾。
創建BLD forder
通過命令提示符進入BLD文件夾
跑
cmake .. -G "Visual Studio 11 2012 Win64"
它將創建MySQL.sln
在Visual Studio中打開MySQL.sln並僅構建“mysqlclient”庫(因為只有這需要應用程序)
這將在我們項目中鏈接的mysql-5.6.24 \\ BLD \\ libmysql \\ <Configuration>文件夾中構建庫。
構建C ++連接器的步驟:
下載mysql-connector-c ++源代碼。 提取它。 在命令提示符下進入解壓縮文件夾。
創建BLD forder
通過命令提示符進入BLD文件夾
運行此命令(確保我們在此之前已經在發布和調試模式下構建了MySQL服務器。還要確保我們已經下載了Boost源代碼)
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"
它將創建MYSQLCPPCONN.sln
在Visual Studio中打開MYSQLCPPCONN.sln並更改'mysqlcppconn-static'項目:
A.在C / C ++下 - >常規 - >附加包含目錄放置此項(適用於所有配置)
nativeapi;..\\;..\\..\\;..\\cppconn;..\\..\\cppconn;..\\..\\..\\mysql-5.6.24\\include;..\\..\\..\\mysql-5.6.24\\BLD\\include;..\\..\\..\\Boost\\boost_1_54_0
B.在Code Genaration中,將運行時庫更改為多線程(調試或非調試取決於配置)和NOT DLL
C.在Librarian下 - >所有選項將“附加選項”和“忽略特定默認庫”保留為空白(對於所有配置)
D.在Librarian下 - >常規將“忽略特定默認庫”保留為空白(對於所有配置)
僅構建'mysqlcppconn-static'庫項目(因為只有應用程序才需要連接到MySQL服務器)
這將在我們項目中鏈接的mysql-connector-c ++ - 1.1.5 \\ BLD \\ driver \\ <Configuration>文件夾中生成庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.