2013-06-23 86 views
2

我想知道为什么我得到这些errors.I使用Qt 5.0.2和msvc2010编译器。它正常运行时,我删除了等功能。 我不是专家程序员,请回答我好像我什么都不知道,谢谢!qt创建者错误:LNK 2019:无法解析的外部符号“__declspec(dllimport)public:void__thiscall

错误: http://puu.sh/3m6Qr.png

我的代码如下:

的.pro

QT  += core gui 
QT  += widgets 
QT  += network 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = guangdong 
TEMPLATE = app 

SOURCES += main.cpp\ 
     login.cpp 

HEADERS += login.h 

FORMS += login.ui 

login.cpp

#include "login.h" 
#include "ui_login.h" 
#include <QtSql/QSql> 
#include <QtSql/QSqlDatabase> 
#include <QDebug> 
#include <Query.h> 
#include <QString> 
#include <QtSql/QSqlQuery> 
#include <QtNetwork/QNetworkInterface> 

login::login(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::login) 
{ 
    ui->setupUi(this); 
    blah(); 
} 

login::~login() 
{ 
    delete ui; 
} 
void login::blah() 
{ 
    // QSqlQuery query; 
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("blah"); 
    db.setDatabaseName("blah"); 
    db.setUserName("blah"); 
    db.setPassword("blah"); 
    bool ok = db.open(); 

    if (ok) { 
     ui->label->setText("databaseopen"); 
     db.close(); 
    } 
    else 
     ui->label->setText("Error opening"); 
} 

的main.cpp

#include "login.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    login w; 
    w.show(); 

    return a.exec(&#41;; 
} 

编辑:我加了Qt + = sql和#include但现在我得到这个错误。 错误: http://puu.sh/3maq2.png

+0

你在.pro文件中加入'QT + = sql'后重新运行qmake吗? –

回答

2

错误消息说,连接器找不到在头<QtSql/QSqlQuery>定义的external symbols。你需要对QtSql库/模块链接:http://qt-project.org/doc/qt-5.0/qtsql/qtsql-index.html

QT  += core gui 
QT  += widgets 
QT  += network 
QT  += sql 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

TARGET = guangdong 
TEMPLATE = app 

SOURCES += main.cpp\ 
     login.cpp 

HEADERS += login.h 

FORMS += login.ui 
+0

好的,所以我添加了#include 和QT + = sql,但现在它给了我C1083:无法打开包含文件:'QtSQL:'没有这样的文件或目录。 – throwaway2013

+0

不需要'#include '这是一个文件夹,而不是标题 –

+0

好的,我删除了#include ,现在它给了我相同的错误。在连接到数据库之前有什么需要做的吗?或者这些代码是否足够? – throwaway2013

2

运行qmake的您更新的.pro文件,你也有两次添加小部件模块后,并且也可引起麻烦:

QT  += core gui 
//QT  += widgets delete this line Qt4 doesn't have widgets and for Qt 5 the widgets are added at the last line 
QT  += network 

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 

对于更复杂的东西,您可以使用* = operator确保将值仅添加到变量中的值列表中一次。

+0

omg我忘了运行qmake。谢谢你们俩。我想我只能赞成,因为德里克回答了主要问题。抱歉 – throwaway2013

相关问题