I need to use C++ and Qt VS Tools in a project in Visual Studio 2022.
If I try to work with QtSql, I should include some specific libraries like <QtSql/QSqlDatabase>, <QtSql/QSqlError>, <QtSql/QSqlQuery>, but after initializing the Local Windows Debugger, I got this sort of errors:
Severity : Error
Code : LNK2019
Description : unresolved external symbol "__declspec(dllimport) public: __cdecl QSqlDatabase::QSqlDatabase(void)" (_`_`imp`_`??0QSqlDatabase@@QEAA@XZ) referenced in function "private: void __cdecl LoginPage::onLoginButtonClicked(void)" (?onLoginButtonClicked@LoginPage@@AEAAXXZ)
Project : StockManager
File : D:\POO-P\StockManager\StockManager\LoginPage.obj
Line : 1
Suppression State :
Header file:
#pragma once
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QVBoxLayout>
#include "ui_LoginPage.h"
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtSql/QSqlQuery>
class LoginPage : public QWidget
{
Q_OBJECT
public:
explicit LoginPage(QWidget* parent = nullptr);
QPushButton* getLoginButton() const { return loginButton; }
QPushButton* getRegisterButton() const { return registerButton; }
bool createConnection();
~LoginPage();
private slots:
void onLoginButtonClicked();
void onRegisterButtonClicked();
signals:
void authenticationSuccessful();
private:
QPushButton* loginButton;
QPushButton* registerButton;
QLineEdit* usernameLineEdit;
QLineEdit* passwdLineEdit;
Ui::LoginPageClass* ui;
};
Source file:
#include "LoginPage.h"
LoginPage::LoginPage(QWidget* parent) : QWidget(parent), ui(new Ui::LoginPageClass)
{
ui->setupUi(this);
ui->passwdLineEdit->setEchoMode(QLineEdit::Password);
loginButton = ui->loginButton;
registerButton = ui->registerButton;
createConnection();
connect(ui->loginButton, &QPushButton::clicked, this, &LoginPage::onLoginButtonClicked);
connect(ui->registerButton, &QPushButton::clicked, this, &LoginPage::onRegisterButtonClicked);
}
bool LoginPage::createConnection() {
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("BOGDAN");
db.setDatabaseName("Driver={SQL Server Native Client 11.0};Server=BOGDAN;Database=StockManager;Trusted_Connection=yes;");
if (!db.open()) {
qDebug() << "Connection failed" << db.lastError().text();
return false;
}
else {
qDebug() << "Successfully connected!";
return true;
}
}
void LoginPage::onLoginButtonClicked()
{
QString username = ui->usernameLineEdit->text();
QString password = ui->passwdLineEdit->text();
QSqlQuery query;
query.prepare("SELECT * FROM Users WHERE Username = :username AND Password = :password");
query.bindValue(":username", username);
query.bindValue(":password", password);
if (query.exec() && query.next()) {
emit authenticationSuccessful();
}
else {
// Invalid login
}
}
void LoginPage::onRegisterButtonClicked()
{
// ... codul tău aici
}
LoginPage::~LoginPage() {
// nu mai este necesar să ștergi ui manual
}
I know that it's a linker problem, but I tried to go to Project Properties -> Linker -> Input -> Add dependencies, and added Qt5Sql.lib and Qt5Sqld.lib, but it doesn't work, here's what I get:
Code : LNK1104
Description : cannot open file 'Qt5Sqld.lib'
Project : StockManager
File : D:\POO-P\StockManager\StockManager\LINK
Line : 1