现在的位置: 首页 > 综合 > 正文

手把手教你:【史上最全】C++开发环境搭建:win732位下VS2010+Boost_1_53_0+Qt5.2+MySql搭建

2018年05月18日 ⁄ 综合 ⁄ 共 9285字 ⁄ 字号 评论关闭

我想说:这两个多星期走得很辛苦,没有人告诉我win732位系统下VS2010+Boost_1_53_0+Qt5.2+MySql开发环境如何搭建,自己一步一步摸索,重装了无数遍系统,试了几十种方法,才艰辛地将环境搭好了。本着赠人玫瑰,手留余香地王道论坛精神,今天把方法全部倾囊而授,为的是让你们少走许多弯路,把时间放在写程序上面。

声明:安装Qt5.2.0而不是更低版本因为Qt5.2.0及其更高版本已经帮你编译好了MySql和其他一些数据库地驱动,否则你自己编译会发生很多错误。

目标:就算你是一个搭建环境的小白,我也要让你能够按照我的步骤傻子似的一步一步把环境搞定。

注意:红色部分的字要注意,很容易出错

概览:

1安装VS2010

2编译Boost_1_53_0库

3安装Qt5.2

4安装MySql

 

1安装VS2010

VS2010 旗舰版可用Key:YCFHQ9DWCYDKV88T2TMHG7BHP

 

2用VS2010编译Boost_1_53_0

第一步:下载boost,我下载的方法是从http://www.boost.org/上找最新的下载。名字叫boost_1_53_0。

 

第二步:在D盘(最新的boost_1_53_0编译之后大小为5G多)创建一个目录boost,拷贝进去并解压到当前文件夹。(注,这里我没有创建boost目录,直接解压的)

 

第三步:开始->程序->MicrosoftVisual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),打开一个控制台。

 

第四步:cd d:\boost\boost_1_53_0

 

第五步:bootstrap.bat

 

第六步:(1)b2--toolset=msvc-10.0 --build-type=complete stage或者(2)bjam.exe--toolset=msvc-10.0 --build-type=complete。等待执行完成。

注:我在这里第五步之后会生成了bjam.exe和b2.exe.这里我执行(1)成功,执行(2)失败

 

设置环境变量:

右击计算机-》属性-》高级系统设置-》高级-》环境变量-》选择系统环境变量下面的“新建”按钮

变量名:BOOST

值:D:\developSoftware\boost_1_53_0【这是我的安装目录】

你们需要修改为你们的安装路径为你们的安装目录:,记住只需要到boost_1_53_0这个目录截止就可以。

 

点击系统环境变量中的"Path"环境变量,点击编辑:

在最前面添加:

D:\developSoftware\boost_1_53_0\boost;D:\developSoftware\boost_1_53_0\stage\lib;

你们按照你们自己的安装目录进行修改,注意一个是以:boost截止,一个是以lib截止

这一步的作用是为了能够寻找头文件和静态链接库文件

 

测试:

第一步:创建一个工程,附加包含目录为:d:\boost\boost_1_53_0;附加库目录为:d:\boost\boost_1_53_0\stage\lib

注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径

这两步我的配置的时候是:(1)D:\boost_1_53_0   (2)D:\boost_1_53_0\stage\lib

第二步:编写代码测试。

注:如果编写的测试代码出现类似错误”无法打开包括文件:“boost/regex.hpp”: No such file or directory” 说明附件包含目录出现错误,这时要纠正包含目录。

如果在下还有incude目录,我们只需包含includes目录就加载了相关头文件,如果没有,如上加载总目录,让编译器自己找。

附加:据说在第六步的时候,如果将执行指令里面的“stage”改成”install”,则会生成include指令。

 附加测试代码:

 C++ Code 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

#include<iostream>
#include <boost/regex.hpp>
using namespace std;

int main()
{
    // 3 digits, a word, any character, 2 digits or "N/A", 
    // a space, then the first word again
    boost::regex reg("\\d{3}([a-zA-Z]+).(\\d{2}|N/A)\\s\\1");

    std::string correct="123Hello N/A Hello";
    std::string incorrect="123Hello 12 hello";

    assert(boost::regex_match(correct,reg)==true);
    assert(boost::regex_match(incorrect,reg)==false);
    cout<<"Hello Boost !"<<endl;
}

 

然后:

右击项目-》属性-》配置属性->C/C++->常规:附加包含目录中,编辑,加入:D:\developSoftware\boost_1_53_0

右击项目-》属性-》配置属性->连接器->输入:附加依赖项,编辑,加入:D:\developSoftware\boost_1_53_0\stage\lib\*.lib

这里你们按照自己的路径进行添加,注意一个是;boost_1_53_0结尾,一个是*.lib结尾。*.lib这里起的作用是过滤掉.dll文件,否则在接下来的

编译中会出现错误。                                                   -》

 

 

如果输出结果为:

则表明boost库在vs2010下配置成功。

 

3安装Qt5.2.0

一、下载Qt5.2安装包(qt-windows-opensource)与Qt插件(Visual
Studio Add-in

  • Qt5.2Qt插件下载地址:http://qt-project.org/downloads.

    Qt5.2也可以在这里下载:http://download.qt-project.org/official_releases/qt/5.2/5.2.0/.

    找到对应的版本进行下载,里面包含多种不同的版本,MSVC2010MSVC2012分别是指支持VS2010VS2012Qt版本,而opengl与非opengl的区别是是否支持openglandroidios分别是指支持androidios平台的Qt版本。

    这里我选择的版本(已标注),如下:

  • qt-windows-opensource-5.2.0-msvc2010_opengl-x86-offline.exeopengl版本)
  • Visual Studio Add-in 1.2.2 for Qt5 

 


二、安装

    先安装qt-windows-opensource,路径随意,注意不能有中文,空格

    再安装Visual Studio Add-in,路径一定要用默认值,否则会出现错误

安装完成后:设置环境变量:

    在系统环境变量中,新建:

变量名:QTDIR

值:D:\Qt\Qt5.2.0\5.2.0\msvc2010_opengl

你们按照你们的安装路径修改,注意最后结尾的是:msvc2010_opengl

    安装完成Visual Studio Add-in之后,VS就会出现相应的Qt选项!

 

 

三、配置开发环境

  • 选择:Qt5->Qt Options->Add,配置VS的开发环境。

 

    这里根据自己的Qt安装路径进行选择,Path为:D:\Software\Qt\Qt5.2.0\5.2.0\msvc2010_opengl

    说明:4.8.3是我之前的版本,因为我可能安装很多个不同的版本(假设发现新版本存在很多问题,我不想再使用,换一个版本,怎么办?)。

    如下,选择你想要使用的版本:

 

    

 

    如果选择了4.8.3版本,那就必须重新下载一个Visual Studio Add-in for Qt4的插件才可以使用(原则:版本对应)。

 

    以上配置完成之后,就可以导入或者新建Qt项目了。

 

导入Qtpro项目

  • 选择:Qt5->Open Qt Project File(.pro)...

 

新建Qt项目

  • 选择:文件->新建->项目->Qt5
    Projects->Qt Application
    ,输入工程名,下一步...进行新建。

如下:

 

 

    新建完成之后,就可以运行了!

  • 选择:调试->开始执行或者 Ctrl+F5

如下:

 

 

添加环境变量    

    在工程目录下找到可执行程序,直接运行,会出现丢失*.dll的提示信息。

如下:

 

    解决方法:

1)右键计算机->属性->高级系统设置->高级->环境变量,添加环境变量PATHD:\Software\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\bin即可。

2)在Qt的安装目录下找到缺少的*.dllD:\Software\Qt\Qt5.2.0\5.2.0\msvc2010_opengl\bin),将其与可执行程序放到同一目录下。

    推荐:方法一。

    因为Qt程序也许会很多,如果每个程序都执行方法二,那么工作量可想而知,所以推荐使用方法一。

 

检查Qt5.2中是否含有MySql驱动:

安装Qt5.2版本的,可以在安装目录下,pluins\sqldrivers下进行查看,面包含有MySQL驱动。

Qt之编译MySQL数据库驱动(MSVC)

 

 

4 安装MySql

1)

(1)进入主页,选择:Downloads(GA)
    如下:
Qt之编译MySQL数据库驱动(MSVC)

(2)转到页面最下面,MySQL Community Edition (GPL),选择:Download from MySQL Developer Zone >>
    如下:
Qt之编译MySQL数据库驱动(MSVC)

(3)转到页面右上角,选择:New Releases对应的版本(这里我选择的是5.6)

    如下:
Qt之编译MySQL数据库驱动(MSVC)
(4)转到页面最下面,Other Downloads,选择对应的版本(这里我选择的是32位)
    如下:
Qt之编译MySQL数据库驱动(MSVC)
    下载完成之后,进行解压,拷贝到一个指定的路径(我选择的是:D:\mysql-5.6.15-win32)。

将MySQL目录(D:\mysql-5.6.15-win32\lib)下的libmysql.dll、libmysqld.dll拷贝到D:\developSoftware\Qt\Qt5.2.0\5.2.0\msvc2010_opengl\bin目录中。

2)安装mysql-installer-community-5.7.4.0-m14.1411728256.msi

之所以在原来已经有非安装版MySql的基础上又弄安装版MySql原因是:

方面后续项目的可视化操作

下载地址:http://dev.mysql.com/downloads

方法/步骤

  1. 1

    双击进入安装,如下图:

  2. 2

    点击上图红框“Install MySQL Products”进入安装界面,如下图:

  3. 3

    根据上图当中第一步骤与第二步骤,进入下图:

  4. 4

    进入设置界面,如下图:

  5. 5

    在原来旧的版本当中,安装类型有3种安装类型:Typical(典型安装)、Complete(完全安装)和Custom(定制安装)。

    Typical(典型安装)安装只安装MySQL服务器、mysql命令行客户端和命令行实用程序。命令行客户端和实用程序包括mysqldump、myisamchk和其它几个工具来帮助你管理MySQL服务器。

    Complete(完全安装)安装将安装软件包内包含的所有组件。完全安装软件包包括的组件包括嵌入式服务器库、基准套件、支持脚本和文档。

    Custom(定制安装)安装允许你完全控制你想要安装的软件包和安装路径。

    而在新版本当中,选项有所不同,不过我这里默认选第一项了,其它选项请看下图:

  6. 6

    进入安装前环境验证,如下图:

  7. 7

    点击“Execute”按钮后,可能会下载一些程序,到时你自己点击安装就行了,直到所有安装完成就OK了,如下图:

  8. 8

    点击“Next”进入安装,如下图:

  9. 9

    网络不好的,得下一阵子呢,等着吧!当安装完了,如下图:

  10. 10

    接着下一步,如下图:

  11. 进入服务器配置,可以选择3种服务器类型,选择哪种服务器将影响到MySQL Configuration Wizard(配置向导)对内存、硬盘和过程或使用的决策。  Developer Machine(开发机器):该选项代表典型个人用桌面工作站。假定机器上运行着多个桌面应用程序。将MySQL服务器配置成使用最少的系统资源。  Server Machine(服务器):该选项代表服务器,MySQL服务器可以同其它应用程序一起运行,例如FTP、email和web服务器。MySQL服务器配置成使用适当比例的系统资源。

     Dedicated MySQL Server Machine(专用MySQL服务器):该选项代表只运行MySQL服务的服务器。假定运行没有运行其它应用程序。MySQL服务器配置成使用所有可用系统资源。

    如下图:

  12. 点击“Next”按钮进入下图:

  13. 点击“Next”进入系统服务Myqsl配置,如下图:

  14. 点击“Next”进入日志配置界面,如下图:

  15. 我简单配置错误日志存放路径,如果不想进入日志配置,那就在“服务器配置”那里不选高级配置,如图下图:

  16. 配置日志后点击“Next”进入最后配置,如下图:

  17. MySQL安装完成,我们验证一下,是否可以正常使用,如下图:

  18. 或者使用MySQL Workbench,如下图:

  19. 输入密码后,查询一下,如下图:

  20. 所有安装配置成完。

 

 

测数:Qt连接MySql

在你的MySql的WorkBench中另:

用户名为:root

密码:123456

新建数据库:qttest

不做这些,下面的Qt将连接不上MySql,数据库先创建名为"qttest"的原因是,下面的代码需要连接这个数据库,如果你本身没有创建,就导致一直连接不上

 

然后编写qt程序:

在"connection.h"中copy下面代码

#ifndef CONNECTION_H
 #define CONNECTION_H

#include <QtSql\qsqldatabase.h>

 inline bool createOneConnection()
 {
     QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  db.setHostName("127.0.0.1");//设置主机地址为本地地址
     db.setDatabaseName("qttest");//注意这里的数据库一定要事先在MySql中建好
     db.setUserName("root");//注意这里一定要与你设置的用户名相一致
  db.setPassword("123456");//注意一定要设置密码
     if (!db.open()) {
         qDebug() << db.lastError();
   getchar();
         return false;  
  }
     return true;
}

 #endif

 

在main.cpp中copy下面代码:

#include "test.h"
#include <QtWidgets/QApplication>
#include <QtCore\qdebug.h>
#include <QtSql\qsqldatabase.h>
#include <QtSql\qsqlquery.h>
#include <QtSql\qsqlerror.h>
#include "connection.h"

int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     if (!createOneConnection())
         return 1;

     QSqlQuery query;
     query.exec("CREATE TABLE artist ("
                "id INTEGER PRIMARY KEY, "
                "name VARCHAR(40) NOT NULL, "
                "country VARCHAR(40))");
     query.exec("CREATE TABLE cd ("
                "id INTEGER PRIMARY KEY, "
                "artistid INTEGER NOT NULL, "
                "title VARCHAR(40) NOT NULL, "
                "year INTEGER NOT NULL)");
     query.exec("CREATE TABLE track ("
                "id INTEGER PRIMARY KEY, "
                "cdid INTEGER NOT NULL, "
                "number INTEGER NOT NULL, "
                "title VARCHAR(40) NOT NULL, "
                "duration INTEGER NOT NULL)");

 #if 1
     query.exec("INSERT INTO artist "
                "VALUES (1001, 'Gluecifer', 'Norway')");
     query.exec("INSERT INTO artist "
                "VALUES (1002, 'The Sounds', 'Sweden')");
     query.exec("INSERT INTO artist "
                "VALUES (1003, 'Melvins', 'USA')");
     query.exec("INSERT INTO artist "
                "VALUES (1004, 'Strapping Young Lads', 'Canada')");
     query.exec("INSERT INTO cd "
                "VALUES (2001, 1001, 'Riding the Tiger', 1997)");
     query.exec("INSERT INTO cd "
                "VALUES (2002, 1001, 'Easy Living', 2002)");
     query.exec("INSERT INTO cd "
                "VALUES (2003, 1002, 'Living in America', 2002)");
     query.exec("INSERT INTO cd "
                "VALUES (2004, 1003, 'Bullhead', 1991)");
     query.exec("INSERT INTO cd "
                "VALUES (2005, 1003, 'Stag', 1996)");
     query.exec("INSERT INTO cd "
                "VALUES (2006, 1003, 'Hostile Ambient Takeover', "
                "2002)");
     query.exec("INSERT INTO cd "
                "VALUES (2007, 1003, '26 Songs', 2003)");
     query.exec("INSERT INTO cd "
                "VALUES (2008, 1004, 'City', 1997)");
     query.exec("INSERT INTO cd "
                "VALUES (2009, 1004, 'No Sleep Till Bedtime', "
                "1998)");
     query.exec("INSERT INTO cd "
                "VALUES (2010, 1004, 'Syl', 2003)");
     query.exec("INSERT INTO track "
                "VALUES (3001, 2004, 01, 'Boris', 514)");
     query.exec("INSERT INTO track "
                "VALUES (3002, 2004, 02, 'Anaconda', 143)");
     query.exec("INSERT INTO track "
                "VALUES (3003, 2004, 03, 'Ligature', 229)");
     query.exec("INSERT INTO track "
                "VALUES (3004, 2004, 04, 'It''s Shoved', 155)");
     query.exec("INSERT INTO track "
                "VALUES (3005, 2004, 05, 'Zodiac', 254)");
     query.exec("INSERT INTO track "
                "VALUES (3006, 2004, 06, 'If I Had An Exorcism', "
                "187)");
     query.exec("INSERT INTO track "
                "VALUES (3007, 2004, 07, 'Your Blessed', 339)");
     query.exec("INSERT INTO track "
                "VALUES (3008, 2004, 08, 'Cow', 271)");
 #endif

     return 0;
 }

 

然后在MySql的WorkBench的qttest数据库:右击->refresh,发现多了3张表,

哈哈,你成功了

 

 

 

抱歉!评论已关闭.