C++ 在Linux(Ubuntu)上为Qt安装ODBC驱动程序运行时出现语法错误;制造;
我正在尝试连接到Qt中ubuntu上的SQL Server数据库,需要安装ODBC驱动程序。 我做了文件让我做的事。并将unixOBDC从安装到C++ 在Linux(Ubuntu)上为Qt安装ODBC驱动程序运行时出现语法错误;制造;,c++,qt,ubuntu,odbc,driver,C++,Qt,Ubuntu,Odbc,Driver,我正在尝试连接到Qt中ubuntu上的SQL Server数据库,需要安装ODBC驱动程序。 我做了文件让我做的事。并将unixOBDC从安装到/usr/local/unixODBC,然后运行这些命令 cd ~/Qt5.7.0/5.7/Src/qtbase/src/plugins/sqldrivers/odbc qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc" mak
/usr/local/unixODBC
,然后运行这些命令
cd ~/Qt5.7.0/5.7/Src/qtbase/src/plugins/sqldrivers/odbc
qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc"
make
这导致了两个源中的语法错误
这就是我现在运行代码时得到的结果
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
我错过了什么
编辑:
makeg++ -c -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -O2 -std=c++11 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -fno-exceptions -Wall -W -Wvla -Wdate-time -D_REENTRANT -fPIC -DQT_NO_TSLIB -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore/5.5.1 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore/5.5.1/QtCore -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1 -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I.moc -I../../../../mkspecs/linux-g++-64 -o .obj/qsql_odbc.o ../../../sql/drivers/odbc/qsql_odbc.cpp
../../../sql/drivers/odbc/qsql_odbc.cpp:193:44: error: ISO C++ forbids declaration of ‘Q_DECLARE_SQLDRIVER_PRIVATE’ with no type [-fpermissive]
Q_DECLARE_SQLDRIVER_PRIVATE(QODBCDriver)
^
../../../sql/drivers/odbc/qsql_odbc.cpp:193:44: error: expected ‘;’ at end of member declaration
../../../sql/drivers/odbc/qsql_odbc.cpp: In constructor ‘QODBCResultPrivate::QODBCResultPrivate(QODBCResult*, const QODBCDriver*)’:
../../../sql/drivers/odbc/qsql_odbc.cpp:198:33: error: no matching function for call to ‘QSqlResultPrivate::QSqlResultPrivate(QODBCResult*&, const QODBCDriver*&)’
hasSQLFetchScroll(true)
^
In file included from ../../../sql/drivers/odbc/qsql_odbc.cpp:59:0:
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:67:5: note: candidate: QSqlResultPrivate::QSqlResultPrivate()
QSqlResultPrivate()
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:67:5: note: candidate expects 0 arguments, 2 provided
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:63:20: note: candidate: QSqlResultPrivate::QSqlResultPrivate(const QSqlResultPrivate&)
class Q_SQL_EXPORT QSqlResultPrivate
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:63:20: note: candidate expects 1 argument, 2 provided
../../../sql/drivers/odbc/qsql_odbc.cpp:200:30: error: ‘drv_d_func’ was not declared in this scope
unicode = drv_d_func()->unicode;
^
../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘void* QODBCResultPrivate::dpEnv() const’:
../../../sql/drivers/odbc/qsql_odbc.cpp:209:49: error: ‘drv_d_func’ was not declared in this scope
SQLHANDLE dpEnv() const { return drv_d_func() ? drv_d_func()->hEnv : 0;}
^
../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘void* QODBCResultPrivate::dpDbc() const’:
../../../sql/drivers/odbc/qsql_odbc.cpp:210:49: error: ‘drv_d_func’ was not declared in this scope
SQLHANDLE dpDbc() const { return drv_d_func() ? drv_d_func()->hDbc : 0;}
^
../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘bool QODBCResultPrivate::isStmtHandleValid()’:
../../../sql/drivers/odbc/qsql_odbc.cpp:228:42: error: ‘drv_d_func’ was not declared in this scope
return disconnectCount == drv_d_func()->disconnectCount;
^
../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘void QODBCResultPrivate::updateStmtHandleState()’:
../../../sql/drivers/odbc/qsql_odbc.cpp:233:34: error: ‘drv_d_func’ was not declared in this scope
disconnectCount = drv_d_func()->disconnectCount;
^
../../../sql/drivers/odbc/qsql_odbc.cpp: In constructor ‘QODBCResult::QODBCResult(const QODBCDriver*)’:
../../../sql/drivers/odbc/qsql_odbc.cpp:959:51: error: no matching function for call to ‘QSqlResult::QSqlResult(QODBCResultPrivate&)’
: QSqlResult(*new QODBCResultPrivate(this, db))
^
In file included from /usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:51:0,
from ../../../sql/drivers/odbc/qsql_odbc.cpp:59:
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:69:5: note: candidate: QSqlResult::QSqlResult(QSqlResultPrivate&, const QSqlDriver*)
QSqlResult(QSqlResultPrivate &dd, const QSqlDriver *db);
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:69:5: note: candidate expects 2 arguments, 1 provided
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:68:14: note: candidate: QSqlResult::QSqlResult(const QSqlDriver*)
explicit QSqlResult(const QSqlDriver * db);
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:68:14: note: no known conversion for argument 1 from ‘QODBCResultPrivate’ to ‘const QSqlDriver*’
../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual bool QODBCResult::exec()’:
../../../sql/drivers/odbc/qsql_odbc.cpp:1464:36: error: ‘class QODBCResultPrivate’ has no member named ‘drv_d_func’
int precision = d->drv_d_func()->datetime_precision - 20; // (2
^
../../../sql/drivers/odbc/qsql_odbc.cpp:1480:42: error: ‘class QODBCResultPrivate’ has no member named ‘drv_d_func’
d->drv_d_func()->datetime_precision,
^
Makefile:463: recipe for target '.obj/qsql_odbc.o' failed
make: *** [.obj/qsql_odbc.o] Error 1
makeg++-c-g-O2-fstack protector-strong-Wformat-Werror=格式安全性-Wdate time-D_-FORTIFY_SOURCE=2-O2-std=c++11-fvisibility=hidden-fvisibility-fvisibility inlines hidden-std=c++11-fno异常-Wall-W-Wvla-Wdate time-D重入-fPIC-DQT-DQT-TSLIB-DUNICODE-DQT-DQT-DQT-NO-CAST-dascii-DQT-DQT异常-D_LARGEFILE64_SOURCE-D_LARGEFILE_SOURCE-DQT_NO_DEBUG-DQT_PLUGIN-DQT_SQL_LIB-DQT_CORE_LIB-I.-isystem/usr/include/x86_64-linux-gnu/qt5/QtCore/5.5.1-isystem/usr/qt5/QtCore/QtCore-isystem/usr/include/x86-linux-gnu/qt5/qt5.5/qtystem/qt5.5.1-linux-gnu/qtu/qt5/qt5.1-SQL-isystem/usr/include/x86_64-linux-gnu/qt5-isystem/usr/include/x86_64-linux-gnu/QtSql-isystem/usr/include/x86_64-linux-gnu/qt5/QtCore-I.moc-I../../../../mkspecs/linux-g++-64-o.obj/qsql_odbc o../../../../sql/drivers odbc qsql/qsql\u odbc cpp
/////SQL/Dealth/ODBC/QSQLYODBC.CPP:193:44:错误:ISO C++禁止声明“qyDeRealSql DrRulerMuxBuy”,没有类型[ferixe]。
Q_DECLARE_SQLDRIVER_PRIVATE(QODBCDriver)
^
../../../sql/drivers/odbc/qsql_odbc.cpp:193:44:错误:应为“;”在成员声明末尾
../../sql/drivers/odbc/qsql_odbc.cpp:在构造函数“QODBCResultPrivate::QODBCResultPrivate(QODBCResult*,const QODBCDriver*)”中:
../../sql/drivers/odbc/qsql_odbc.cpp:198:33:错误:调用“QSqlResultPrivate::QSqlResultPrivate(QODBCResult*&,const QODBCDriver*&)”时没有匹配的函数
hasSQLFetchScroll(真)
^
在../../../sql/drivers/odbc/qsql_odbc.cpp:59:0中包含的文件中:
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:67:5:注:候选:QSqlResultPrivate::QSqlResultPrivate()
QSqlResultPrivate()
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:67:5:注意:候选者需要0个参数,提供2个
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult\u p.h:63:20:注:候选:QSqlResultPrivate::QSqlResultPrivate(const QSqlResultPrivate&)
类Q_SQL_导出QSqlResultPrivate
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:63:20:注意:候选者需要1个参数,提供2个
../../../sql/drivers/odbc/qsql_odbc.cpp:200:30:错误:未在此作用域中声明“drv_d_func”
unicode=drv_d_func()->unicode;
^
../../../sql/drivers/odbc/qsql_odbc.cpp:在成员函数“void*QODBCResultPrivate::dpEnv()const”中:
../../../sql/drivers/odbc/qsql_odbc.cpp:209:49:错误:未在此作用域中声明“drv_d_func”
SQLHANDLE dpEnv()常量{return drv_d_func()?drv_d_func()->hEnv:0;}
^
../../../sql/drivers/odbc/qsql_odbc.cpp:在成员函数“void*QODBCResultPrivate::dpDbc()const”中:
../../../sql/drivers/odbc/qsql_-odbc.cpp:210:49:错误:“drv_d_-func”未在此范围内声明
SQLHANDLE dpDbc()常量{return drv_d_func()?drv_d_func()->hDbc:0;}
^
../../../sql/drivers/odbc/qsql_odbc.cpp:在成员函数“bool QODBCResultPrivate::isStmtHandleValid()”中:
../../../sql/drivers/odbc/qsql_-odbc.cpp:228:42:错误:“drv_d_-func”未在此范围内声明
返回disconnectCount==drv_d_func()->disconnectCount;
^
../../../sql/drivers/odbc/qsql_odbc.cpp:在成员函数“void QODBCResultPrivate::updateStmtHandleState()”中:
../../../sql/drivers/odbc/qsql_-odbc.cpp:233:34:错误:“drv_d_-func”未在此范围内声明
disconnectCount=drv_d_func()->disconnectCount;
^
../../sql/drivers/odbc/qsql_odbc.cpp:在构造函数“QODBCResult::QODBCResult(const QODBCDriver*)”中:
../../sql/drivers/odbc/qsql_odbc.cpp:959:51:错误:调用“QSqlResult::QSqlResult(QODBCResultPrivate&)”时没有匹配的函数
:QSqlResult(*新QODBCResultPrivate(this,db))
^
在/usr/include/x86_64-linux-gnu/qt5/QtSql/5.5.1/QtSql/private/qsqlresult_p.h:51:0中包含的文件中,
来自../../../sql/drivers/odbc/qsql_odbc.cpp:59:
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:69:5:注:候选:qsqlresult::qsqlresult(QSqlResultPrivate&,const QSqlDriver*)
QSqlResult(QSqlResultPrivate&dd,常量QSqlDriver*db);
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:69:5:注意:候选者需要2个参数,提供1个
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:68:14:注:候选:qsqlresult::qsqlresult(const QSqlDriver*)
显式QSqlResult(常量QSqlDriver*db);
^
/usr/include/x86_64-linux-gnu/qt5/QtSql/qsqlresult.h:68:14:注意:参数1从'QODBCResultPrivate'到'const QSqlDriver*'的转换未知
../../../sql/drivers/odbc/qsql_odbc.cpp:在成员函数“virtual bool QODBCResult::exec()”中:
../../sql/drivers/odbc/qsql_odbc.cpp:1464:36:错误:“类QODBCResultPrivate”没有名为“drv_d_func”的成员
int precision=d->drv_d_func()->d