2015-09-13 3 views
1

Je commence à programmer dans Visual Studio C++ (2013) et j'utilise Qt (5.5.0) pour l'interface utilisateur. J'essaie de me connecter à ma base de données SQL Server (sql server 2012).connexion sql base de données en qt dans Visual Studio

il devrait être simple basé sur la documentation. ceci est mon code:

#include "qt_test1.h" 
//#include "ui_qt_test1.h" 
#include <qmessagebox.h> 
#include <qfiledialog.h> 
#include <QtGui> 
#include <QtSql\qsql.h> 
#include <QtSql\qsqldatabase.h> 
#include <QtSql\qsqlerror.h> 
#include <qdebug.h> 

qt_test1::qt_test1(QWidget *parent) 
: QMainWindow(parent) 
{ 
    ui.setupUi(this); 

} 

qt_test1::~qt_test1() 
{ 

} 

// when button clicked try to connect to database 
void qt_test1::on_btnShowHello_clicked() 
{ 

    QSqlDatabase db = QSqlDatabase::addDatabase("mydb"); 
    db.setDatabaseName("C:\\Program Files\\Microsoft SQL Server\\MSSQL11.MSSQLSERVER\\MSSQL\\DATA\\qt_test_db"); 

    bool ok = db.open(); 
} 

bien quand j'essaye de déboguer j'obtiens cette erreur bizarre. son genre de chose dll manquant que je ne sais pas si c'est mon problème de code ou erreur d'installation qt.

erreurs:

erreur 2 LNK2019 d'erreur: symbole externe non résolu "__declspec (dllimport) public: __cdecl QSqlDatabase :: ~ QSqlDatabase (void)" (__imp _ ?? 1QSqlDatabase @@ QEAA @ XZ) référencé dans la fonction "private: void __cdecl qt_test1 :: on_btnShowHello_clicked (void)" (on_btnShowHello_clicked @ qt_test1 @@ AEAAXXZ?) E: \ projet \ qt_test1 \ qt_test1 \ qt_test1.obj qt_test1

erreur 3 erreur LNK2019: symbole externe non résolu "__declspec (dllimport) public: bool __cdecl QSqlDatabase :: open (void)" (__imp_ ouvrir @ QSqlDatabase @@ QEAA_NXZ?) Référencé dans la fonction? "Private: vide __cdecl qt_test1 :: on_btnShowHello_clicked (void)" (on_btnShowHello_clicked @ qt_test1 @@ AEAAXXZ) E: \ projet \ qt_test1 \ qt_test1 \ qt_test1.obj qt_test1

erreur 4 erreur LNK2019: symbole externe non résolu « __declspec (dllimport) public: void __cdecl QSqlDatabase :: setDatabaseName (classe QString const &) " (__imp_? SetDatabaseName @ QSqlDatabase @@ QEAAXAEBVQString @@@ Z) référencé dans la fonction" private: void __cdecl qt_test1 :: on_btnShowHello_clicke d (void) " (on_btnShowHello_clicked @ qt_test1 @@ AEAAXXZ?) E: \ projet \ qt_test1 \ qt_test1 \ qt_test1.obj qt_test1

Erreur 5 Erreur LNK2019: symbole externe non résolu " __declspec (dllimport) public: classe statique QSqlDatabase de QSqlDatabase :: addDatabase (classe QString const &, classe QString const &) "(? __imp_ addDatabase @ QSqlDatabase @@ SA AV1 @ AEBVQString @@ 0 @ Z) référencé dans la fonction" private: void __cdecl qt_test1 :: on_btnShowHello_clicked (void) " (? on_btnShowHello_clicked @ qt_test1 @@ AEAAXXZ) E: \ Projet \ qt_test1 \ qt_test1 \ qt_test1.obj qt_test1

Erreur 6 Erreur LNK2001: symbole externe non résolu "__declspec (dllimport) public: statique char * QSqlDatabase :: DefaultConnection" (__imp_ DefaultConnection @ QSqlDatabase @@ 2PEADEA?) E: \ projet \ qt_test1 \ qt_test1 \ qt_test1. obj qt_test1

erreur 7 erreur LNK1120: 5 non résolue externals E: \ projet \ qt_test1 \ x64 \ Debug \ qt_test1.exe qt_test1

Répondre

1

Ce n'est pas votre code, ni l'installation de Qt. Vous ne comprenez pas comment C/C++ compile les programmes. Je vous suggère de faire des recherches sur la façon dont le précompilateur, le compilateur et l'éditeur de liens fonctionnent afin de combler votre manque de connaissances. En bref, chaque fois que vous obtenez une erreur de "symbole externe non résolu", il s'agit d'une erreur générée par l'éditeur de liens, ce qui signifie que vous avez laissé une sorte de bibliothèque hors des paramètres du projet.

Qt est livré avec une gamme complète de modules, organisés en différentes bibliothèques. Le module QSql en fait partie.

Si vous avez Qt de Visual Studio Add-in, cela est facile à résoudre: il suffit de faire un clic droit sur votre projet, sélectionnez Qt Project Settings, puis sélectionnez l'onglet SQLQt Modules.

Si le complément n'est pas installé, vous devez ajouter les dépendances manuellement.

Cliquez avec le bouton droit sur votre projet, sélectionnez Properties. Développez Configuration properties, puis développez Linker et sélectionnez Input. Dans le Additional Dependencies, ajouter:

  1. Qt5Sqld.lib à la configuration de débogage
  2. Qt5Sql.lib à la configuration de sortie
1

Votre projet peut manquer la dépendance QtSql.lib. Quelque part dans la configuration du projet dans VS, vous devriez avoir la possibilité d'ajouter des dépendances supplémentaires de l'éditeur de liens - cette bibliothèque devrait se trouver dans votre répertoire d'installation de Qt (Qt/lib). J'espère que cela aide.