win7 安装用mingw编译的Qt源码并连接postgresql
下载Qt
1.下载qt-creator-windows-opensource-2.8.0,下载路径:http://download.qt.io/official_releases/qtcreator/2.8/2.8.0/
例如:安装到D:\Qt\qtcreator-2.8.0路径中。
并将bin目录路径添加到环境变量中。
先安装用来写代码的Qt SDK(软件开发工具包(Software Development Kit)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。)
--Qt Create,下载qt-creator-windows-opensource-2.8.0.exe,下载路径http://download.qt.io/archive/qt/4.8/4.8.6/
例如:安装到本地路径是:D:\Qt\qtcreator-2.8.0。
3.安装Qt(开发软件)qt-win-opensource-4.8.5-mingw.exe(注意:在安装前将MinGW-gcc440_1.zip解压,将解压后的mingw放到D:\Qt下,否则安装qt的过程中在此路径中没有找到g++。)
执行qt应用程序会需要两个路径来分别存储qt和mingw,例如:安装的路径分别是:D:\Qt\4.8.5和D:\Qt\mingw
4.将qt和mingw路径添加到环境变量中:path+=D:\Qt\mingw\bin;D:\Qt\4.8.5;D:\Qt\4.8.5\bin;
5.重启电脑(环境变量修改后,重启电脑后才可备用)
6.依次执行以下DOS命令:
1) >g++ --version
2) >gcc --version
3) >mingw32-make -v
每个指令执行后,会显示出他们所对应的版本,以及说明,这样代表着mingw已经顺利安装成功
7. 这个时候配置Qt Create,即可编写Qt 代码:
配置:工具——>构建和运行——>编译器——>添加(mingw)——>编译器路径(例如:D:\Qt\mingw\bin\g++.exe)——>Qt版本——>添加——>qmake路径(例如:D:\Qt\4.8.5\bin\qmake.exe)
——>构建套件:如下图设置:
如果套件前有红色叹号,点击应用(Apply)重新再打开Qt Create应用程序即可编写Qt代码。
如果不能顺利的实现Qt设置,那估计就是你安装出问题,或者配置的时候没仔细。
-----------------------------------------------------------------------------------------------------------
安装postgresql
1.下载解压并安装 postgresql-9.5.1-1-windows(postgresql 32位,因为qt连接数据库的插件不支持64位,所以qt编译驱动用到的数据库插件一定是32位的,但是执行的程序连接的数据库可以32位也可64位就无所谓了).
例如:安装路径为D:\PostgreSQLx86\9.5(注意:安装路径不能有空格,否在在接下来利用qgsql的编译驱动的时候,会失败)
2.安装完成之后,将PostgreSQL的安装路径放到环境变量中:path+=D:\PostgreSQLx86\9.5\include;D:\PostgreSQLx86\9.5\lib;D:\PostgreSQLx86\9.5\bin;
3.重启电脑(环境变量修改后,重启电脑后才可备用)
-----------------------------------------------------------------------------------------------------------
Qt连接postgresql数据库(因为Qt默认版本没有连接postgresql数据库的驱动,所以需要手动编译驱动)
1.下载qt4.8.5源码:qt-everywhere-opensource-src-4.8.5.tar(注意:一定要源码生成的数据库驱动才可以用,所以编译驱动需要下的qt4.8.5源码)
解压qt-everywhere-opensource-src-4.8.5.tar并进入目录。例如:D:\qt-everywhere-opensource-src-4.8.5\
2. 打开Qt 4.8.5 Command Prompt.lnk(在开始所有程序Qt by Digia v4.8.5 (MinGW OpenSource)的文件夹下)
依次执行以下DOS命令:
(1)>cd D:\Qt\qt-everywhere-opensource-src-4.8.5
(2)>configure.exe
接下来一次输入:o;y,不到5分钟等待:
(3)>mingw32-make,编译会花去我大概4小时;我大概都感觉要安装错误了,不过中间有报错,我就去安装qt-win-opensource-4.8.5-mingw.exe的安装目录D:\Qt\4.8.5中copy了一个替换出问题的文件,继续命令mingw32-make。反正秉承着什么出问题就换什么,顺利执行。其实这一步还没执行结束的时候就已经往下执行了,估计需要编译驱动的文件都已经执行好了。
(4)>cd D:\Qt\qt-everywhere-opensource-src-4.8.5\src\plugins\sqldrivers\psql
(5)>qmake "INCLUDEPATH+=D:/PostgreSQLx86/9.5/include" "LIBS+=D:/PostgreSQLx86/9.5/lib/libpq.dll" psql.pro
(6)>mingw32-make
执行成功,链接postgreSQL的驱动生成:在D:\Qt\qt-everywhere-opensource-src-4.8.5\plugins\sqldrivers下产生4个文件,libqsqlpsql4是release产生的,libqsqlpsqld4是debug产生的
3.将4个文件copy到D:\Qt\4.8.5\plugins\sqldrivers下。
4.在Qt Create新建一个项目控制台应用程序测试:也放在Qt文件夹下。
先检查生成的pgsql数据库驱动是否可用
#include <QCoreApplication>
#include <QDebug>
#include <QtSql/QSqlDatabase>
#include <QStringList>
#include <QPluginLoader>
int main(int argc, char *argv[]){
QCoreApplication a(argc, argv);
QPluginLoader loader;
// PGSQL 驱动插件的路径
loader.setFileName("D:/Qt/4.8.5/plugins/sqldrivers/qsqlpsqld4.dll");
qDebug() << loader.load();
qDebug() << loader.errorString();
return a.exec();
}
报错:undefined reference to `_imp___ZN12QSqlDatabase7driversEv'
解决方案: .pro 文件中添加
QT +=sql
执行结果:
驱动可用:
那么调整代码,查看目前驱动有哪些:
#include <QCoreApplication>
#include <QDebug>
#include
<QtSql/QSqlDatabase>
#include <QStringList>
int
main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug()<<driver;
return a.exec();
}
执行结果:
--------------------------------------------------------------------
写了代码连下数据库
#include <QCoreApplication>
#include <QTextCodec>
#include <QSqlDatabase>
#include <QtSql>
#include <QDebug>
bool createConnection(){
QSqlDatabase db=QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost"); // IP
db.setHostName(5432); // 端口号
db.setDatabaseName("test"); // 数据库名称
db.setUserName("postgres"); // 用户名
db.setPassword("123456"); // 密码
if(!db.open()) {
qDebug()<<"Database Error"<<db.lastError().text();
return false;
}
return true;
}
int main(int argc, char *argv[]){
QCoreApplication a(argc, argv);
if(!createConnection())
return 1;
QSqlQuery query("SELECT userno, usename FROM t1;");
while(query.next()) {
qDebug()<<"ID:"<<query.value(0).toString()<<" NAME:"+query.value(1).toString();
}
return a.exec();
}
哇哈哈哈哈,顺利显示,我折磨两周的问题终于圆满结束!
win7 安装用mingw编译的Qt源码并连接postgresql的更多相关文章
- msvc2013编译qt5.6源码
1.回顾 说起到qt的编译,真是领人痛心啊,不仅编译选项繁多,而且编译时间比较久,总是能使想编译qt源码的人望而却步,呵呵...我就是其中一个,不知道从什么时候开始就想着把qt的源码编译一下,也尝试过 ...
- 麒麟系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12
前言 上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到从源码编译的Qt,所以本篇如何在银河麒麟系统V4上编译Qt5.12源码. 银河麒麟V4版本 系统版本: Qt源码下载 ...
- Win7下静态编译QT5.12源码
官方参考文档:https://doc.qt.io/qt-5/build-sources.html CSDN博客:https://blog.csdn.net/GG_SiMiDa/article/deta ...
- 查看和调试Qt源码(动态编译的QT也可进入源码)good
简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...
- 使用VS2005安装和编译QT4.53源码
学习Qt,当然是QT4好.可是装了4.86以后,网上下载的书中的例子大多无法直接用VS执行(个人不喜欢用QT Creator),即打开pro转换的时候出错(我也懒的研究为什么出错了).看了一下发布时间 ...
- Qt源码编译
Qt源码编译 eryar@163.com Key words. Qt, 源码编译 1.Introduction 随着Qt版本升级,源码编译出来的库体积越来越大.如果只是用Qt来做GUI,Qt提供的预编 ...
- Windows,linux下编译qt源码(比较简单)
一.linux下静态编译qt源码 1.取到qt源码并解压到文件夹 2.cd到qt目录下 3.使用configure生成makefile ./configure–prefix /opt/qtstatic ...
- 查看和调试Qt源码
简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...
- vs下 qt源码调试
1.下载qt源码,我下载的是4.7.1版本 2.vs安装qt插件qt-add-in 3.进入qt根目录,打开configure文件,找到 QT_DEFAULT_BUILD_PARTS="li ...
随机推荐
- 学习PYTHON之路, DAY 10 进程、线程、协程篇
线程 线程是应用程序中工作的最小单元.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务. 直接调用 impo ...
- PPT母版制作
选择母版 首先,去iSlide官网下载iSlide,下载iSlide后,power point的菜单栏会自动出现iSilde图标(如下图). 打开iSlide这一栏,点击“图示库”,会弹出一个窗口,就 ...
- 解决Sublime的package control被墙
主要是https://packagecontrol.io 这个被墙了 下载不下来导致的错误,把下载链接改为国内的. 操作步骤: 打开: Preferences > Package Setting ...
- CodeBlocks中我遇到的无法调试问题及解决方案
CodeBlocks中遇到无法调试问题,可能有很多种,以下是我遇到的问题及解决方案 1.当无法调试时,如果IDE提示你出现下图中红色问题,说明你的调试器没有装好 2.在菜单栏点击Settings--D ...
- 得到本地电脑IP4地址
using System.Linq;using System.Net;using System.Net.Sockets; namespace winform_udp{ public class com ...
- 最长公共子串和子序列的Python实现,带图示。
使用矩阵来记录两个子串之间各个字符之间的对应关系. 最长子串:矩阵中数字最大的就是最长子串的长度.若对应位置字符相同,则c[i][j] = c[i-1][j-1] + 1 def longSubStr ...
- tinyproxy代理配置
tinyproxy代理配置 应用场景: 生产机处于内网,无法直接访问外网,程序安装和漏洞修复等操作需要进行联网操作:通过在办公网(可访问外网)上设置代理服务器,生产机通过代理由办公网访问外网 代理服务 ...
- MFC窗口风格 WS_style/WS_EX_style
窗口风格(Window style) WS_BORDER 有边框窗口 WS_CAPTION 必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用.指示窗口包含标题要部分 ...
- linux下anaconda和keras配置过程
连接服务器,使用ssh协议. 下载anaconda bash Anaconda3-5.1.0-Linux-x86_64.sh(安装过程需要输入yes来添加环境变量,需要输入一次安装路径.) 因为环境变 ...
- Intellij IDEA xxx.properties变成纯文本模式解决方案
今天在创建xxx.properties的时候不知道按到了哪里,结果让它编程了纯文本模式,重命名这个文件或者删掉,重新创建这个同名文件,换一个项目,始终是文本文件类型,就估计不是项目问题,是intell ...