2015-06-20 1 views
0

У меня есть Qt программы, которая делает использование QtSql, я включил все заголовки (#include <QtSql/QtSql>) и даже побежали Run QMake и rebuild однако он бросает следующие ошибки компоновщика:неопределенные символы для архитектуры x86_64 Qt

Undefined symbols for architecture x86_64: 
    "QSqlDatabase::addDatabase(QString const&, QString const&)", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlDatabase::setDatabaseName(QString const&)", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlDatabase::defaultConnection", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlDatabase::open()", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlDatabase::QSqlDatabase()", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlDatabase::~QSqlDatabase()", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlDatabase::operator=(QSqlDatabase const&)", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlError::~QSqlError()", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlQuery::exec()", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlQuery::prepare(QString const&)", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlQuery::bindValue(QString const&, QVariant const&, QFlags<QSql::ParamTypeFlag>)", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlQuery::QSqlQuery(QString const&, QSqlDatabase)", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlQuery::~QSqlQuery()", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlDatabase::lastError() const", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlQuery::value(int) const", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "QSqlQuery::lastError() const", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
    "operator<<(QDebug, QSqlError const&)", referenced from: 
     authcontroller::authenticate(QString const&, QString const&) in authcontroller.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

I не выполнял никаких специальных шагов по настройке QtSql и не устанавливал драйверы SQLite, поскольку я понимаю, что они уже включены в установку Qt.

Любые идеи? Я бегу последнюю версию Qt распределение

Благодаря

+3

добавить 'QT + = sql' к вашему' .pro' Did файл? Недостаточно включать заголовки для определенного модуля, вы также должны указать его использование с указанным выше синтаксисом. – BaCaRoZzo

+0

Yep - просто сделал это сейчас, и это сработало. Не полностью читал документацию QtSQL :) спасибо! –

ответ

2

Как BaCaRoZzo отметил, что мне нужно, чтобы разместить QT += sql в файле .pro

+0

Это общее правило для * любого * модуля. Вы можете проверить имя конкретного модуля, которое будет объявлено в документации любого класса вверху, в поле «qmake». См. Например, [QSqlDatabase] (http://doc.qt.io/qt-5/qsqldatabase.html) – BaCaRoZzo