Qt5.5 connection firebird on Linux Centos7.2 or windows
2024-08-31 20:10:41
windows c++ 项目移植到 linux,原项目需要连接 Firebird数据库。
google 后知道 linux qt connection Firebird 有两种方法:
- 1.ibpp connection firebird;
- 2.QSqlDatabase: QIBASE driver connection Firebird;
Linux 环境编译libqsqlibase.so
- 安装Centos7.2 桌面、安装qt5.5 ;
- Install GCC Compiler on CentOS7
sudo yum group install "Development Tools"
sudo yum install man-pages
gcc --version
报:QSqlDatabase: QIBASE driver not loaded 需要自己编译 QIBASE driver 生成libqsqlibase.so
- 参考下面方法
https://forum.qt.io/search?term=libqsqlibase.so&in=posts&matchWords=all&sortBy=relevance&sortDirection=desc&showAs=posts
- 毕竟环境和网上不完全一样,可能会遇到一些问题。
[root@Desk001 ~]# find / -name ibase
/opt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/ibase
/opt/Qt5.5.1/5.5/Src/qtbase/src/sql/drivers/ibase
/opt/Qt5.5.1/5.5/Src/qtbase/config.tests/unix/ibase
[root@Desk001 ~]# cd /opt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/ibase
[root@Desk001 ibase]# /opt/Qt5.5.1/5.5/gcc_64/bin/qmake ibase.pro
[root@Desk001 ibase]# ll
total 60
-rwxrwxr-x. 1 root root 29 Oct 13 2015 ibase.json
-rwxrwxr-x. 1 root root 187 Dec 16 22:50 ibase.pro
-rwxrwxr-x. 1 root root 2254 Oct 13 2015 main.cpp
-rw-r--r--. 1 root root 46701 Dec 16 23:09 Makefile
[root@Desk001 ibase]# chmod 775 Makefile
[root@Desk001 ibase]# make
报错
../../../sql/drivers/ibase/qsql_ibase_p.h:50:19: fatal error: ibase.h: No such file or directory
#include <ibase.h>
报错 /usr/bin/ld: cannot find -lgds
[root@Desk001 ibase]# ln -s /usr/lib64/libfbclient.so.2.5.9 /usr/lib64/libgds.so
- 缺失头文件官网下载;
- ibpp官网地址
4.make make install、
[root@Desk001 ibase]# cd /opt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/ibase
[root@Desk001 ibase]# ll
total 64
-rwxrwxr-x. 1 root root 29 Oct 13 2015 ibase.json
-rwxrwxr-x. 1 root root 187 Dec 16 22:50 ibase.pro
drwxr-xr-x. 5 root root 4096 Dec 16 23:33 ibpp
-rwxrwxr-x. 1 root root 2254 Oct 13 2015 main.cpp
-rwxrwxr-x. 1 root root 46701 Dec 16 23:09 Makefile
[root@Desk001 ibase]# make
......
[root@Desk001 ibase]# make install
install -m 755 -p ../../../../plugins/sqldrivers/libqsqlibase.so /opt/Qt5.5.1/5.5/gcc_64/plugins/sqldrivers/libqsqlibase.so
strip --strip-unneeded /opt/Qt5.5.1/5.5/gcc_64/plugins/sqldrivers/libqsqlibase.so
install -m 644 -p /opt/Qt5.5.1/5.5/Src/qtbase/lib/cmake/Qt5Sql/Qt5Sql_QIBaseDriverPlugin.cmake /opt/Qt5.5.1/5.5/gcc_64/lib/cmake/Qt5S
ql/
[root@Desk001 apps]# cd /opt/Qt5.5.1/5.5/gcc_64/plugins/sqldrivers
[root@Desk001 sqldrivers]# ll
total 1076
-rwxr-xr-x. 1 root root 102168 Dec 16 23:57 libqsqlibase.so
-rwxr-xr-x. 1 root root 838064 Oct 13 2015 libqsqlite.so
-rwxr-xr-x. 1 root root 75504 Oct 13 2015 libqsqlmysql.so
-rwxr-xr-x. 1 root root 79248 Oct 13 2015 libqsqlpsql.so
Windos 环境编译 ibase
参考
https://forum.qt.io/topic/26620/how-to-build-plugin-qibase-for-firebird-qt-5-0-2/4
- 安装qt5.5、配置qt环境变量,安装FireBird2.5(32位)(软件版本按自己需求选)。
- 修改 F:\ProgramFiles\qt5.5\5.5\Src\qtbase\src\plugins\sqldrivers\ibase\ibase.pro
添加FireBird数据库include
TARGET = qsqlibase
SOURCES = main.cpp
OTHER_FILES += ibase.json
INCLUDEPATH += C:/Firebird/Firebird_2_5/include
LIBS += C:/Firebird/Firebird_2_5/lib/fbclient_ms.lib
include(../../../sql/drivers/ibase/qsql_ibase.pri)
PLUGIN_CLASS_NAME = QIBaseDriverPlugin
include(../qsqldriverbase.pri)
- 编译
qmake ibase.pro
mingw32-make(有报头文件 ibase.h 找不到)
修改 F:\ProgramFiles\qt5.5\5.5\Src\qtbase\src\sql\drivers\ibase\qsql_ibase_p.h
添加
#include <ibase.h>
修改F:\ProgramFiles\qt5.5\5.5\Src\qtbase\src\plugins\sqldrivers\ibase\main.cpp
添加
#include "../../../sql/drivers/ibase/qsql_ibase_p.h"
然后重新编译
mingw32-make
Win环境 使用FireBird
a.本机安装数据库服务情况下直接使用;
b.本机不安装数据库服务情况下,可以访问远程数据库(网络模式);
- firebird官网下载 32-bit Classic, Superclassic & Superserver,安装。
- 安装完成后把 bin目录下的fbclient.dll 放到工程编译后生成的exe同级目录
c.本机不启用数据库服务情况下,可以访问本机数据库文件(嵌入式模式)。 - firebird官网下载 32-bit Embedded。
- 解压后把fbembed.dll改成fbclient.dll 放到工程编译后生成的exe同级目录
- 参考
Client and server combined: Firebird Embedded Server 嵌入式文档
最新文章
- jQuery视差滚动插件,(附原理分析,调用方法)
- 解决 主界面mainactivity 中fragment弹框把下面tab选项卡 顶上去的方案
- 分布式HBase-0.98.4环境搭建
- USACO 3.2 ratios 高斯消元
- C语言下动态库相互调用
- Linux远程文件传输
- OC第一天-Xcode、工程组成及运行状态
- 多重部分和的计数dp
- 一个测试SQL2005数据库连接JSP档
- C#采用的是“四舍六入五成双”、上取整、下取整
- Struts2--DomainModel接收参数---使用广泛!!!
- lesson - 14 linux系统日常管理3
- 编码与模式------《Designing Data-Intensive Applications》读书笔记5
- 解决VS2010使用mscomm控件无法接收数据的问题【转】
- 基于Windows 机器学习(Machine Learning)的图像分类(Image classification)实现
- python基础--time和datetime模块
- idea使用svn提交时出现错误Warning not all local changes may be shown due to an error
- C语言求数组的第二大数
- CF 1138 E. Museums Tour
- WPF——RenderTransform特效
热门文章
- MySQL的单表查询
- 详解 I/O流
- [转+自]disable_functions之巧用LD_PRELOAD突破
- JWT验证机制【刘新宇】【Django REST framework中使用JWT】
- windows下部署.netcore+docker系列四 (部署程序,重点就要来了)
- 记使用STL与unique_ptr造成的事故-段子类比
- eclipse自动补全导致变量会跟上String后缀的问题解决
- 虚拟机 VMware Workstation Pro 15.5.0 及永久激活密钥
- 第三方库PyYAML
- java中for循环和while循环,哪个更快?--一道面试题