如何使用QtCreator将应用程序与"libqsqlpsql.so"链接?

how to link an app with "libqsqlpsql.so" by using QtCreator?

本文关键字:libqsqlpsql so 链接 何使用 QtCreator 应用程序      更新时间:2023-10-16

对不起!我知道这是一个愚蠢的问题,可能会在某个地方与某个问题重复,但我实际上无法搜索出来(既不是谷歌也不是StackOverflow)。因为我是从零开始学习Qt的,所以有太多的东西需要掌握,当问题出现时,我甚至无法确定应该搜索什么。

我制作了一个想要连接postgresql数据库的示例应用程序。为了确保我已经为postgresql提供了合适的数据库驱动程序,我首先检查了以下内容。

auto drivers = QSqlDatabase::drivers();
foreach( const QString& drv, drivers )
qDebug() << drv;

我看到输出包括"QPSQL"/"QPSQL7",我想我可以连接到数据库。

但当我实际添加进行连接的代码时,我会遇到一个链接错误:"找不到-lqsqlpsql"。以下是无法链接的代码:

auto db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName( "localhost");
db.setUserName("postgres");
db.setPassword("123456");
db.setDatabaseName("qtall");
if ( db.open() ) {
qDebug( "Opened!" );

我在"/home/myname/Qt5.12.3/5.12.3/gcc_64/plugins/sqldrivers"中找到了一个名为"libqsqlpsql.so"的文件,我想这就是我需要的库。因为构建应用程序的处理是在QtCreator中进行的,而不是直接使用gcc,所以我不能向gcc添加任何选项。我想一定有正确的方法来配置Qt-instad,但我不知道。

这是我的应用程序.pro:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = job-manager
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
CONFIG += c++11
SOURCES += 
main.cpp 
mainwindow.cpp
HEADERS += 
mainwindow.h
FORMS += 
mainwindow.ui
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
unix:!macx: LIBS += -lqsqlpsql

欢迎任何提示!

我搞定了!

  1. 将"sql"模块附加到.pro文件的第一行,如下所示:

    QT+=核心gui sql

2.删除(注释掉)同一文件的最后一行:

unix:!macx:LIBS+=-lqsqlpsql

事实上,我所做的并不是不够,而是太多了。只要我们将"sql"模块附加到第一行"Qt+=***",Qt就会自动找到共享库libqsqlpsql.so。