![](/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.