您的位置:首页 > 编程语言 > Qt开发

qt-everywhere-opensource-src-4.8.4 编译出错

2013-08-26 16:39 513 查看
环境描述: fedora 9   

下载 源码包:qt-everywhere-opensource-src-4.8.4   编译,编译出错:

make[3]: Entering directory `/home/xxx/vs/work1/qt-everywhere-opensource-src-4.8.4/src/plugins/sqldrivers/odbc'

g++ -c -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT
-DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_SHARED -I../../../../mkspecs/linux-g++ -I. -I../../../../include/QtCore -I../../../../include/QtSql -I../../../../include -I.moc/release-shared
-o .obj/release-shared/main.o main.cpp

g++ -c -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT
-DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_SHARED -I../../../../mkspecs/linux-g++ -I. -I../../../../include/QtCore -I../../../../include/QtSql -I../../../../include -I.moc/release-shared
-o .obj/release-shared/qsql_odbc.o ../../../sql/drivers/odbc/qsql_odbc.cpp

../../../sql/drivers/odbc/qsql_odbc.cpp: In function ‘QString qWarnODBCHandle(int, void*, int*)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:221: 错误:不能将‘SQLRETURN SQLGetDiagRec(SQLSMALLINT, void*, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*)’的实参‘4’从‘SQLTCHAR*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp:231: 错误:不能将‘SQLRETURN SQLGetDiagRec(SQLSMALLINT, void*, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*)’的实参‘4’从‘SQLTCHAR*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In function ‘QVariant::Type qDecodeODBCType(SQLSMALLINT, const T*, bool)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:333: 错误:‘SQL_WCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp:334: 错误:‘SQL_WVARCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp:335: 错误:‘SQL_WLONGVARCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp: In function ‘QString qGetStringData(void*, int, int, bool)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:370: 错误:‘SQL_C_TCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp: In function ‘QVariant qGetBinaryData(void*, int)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:475: 错误:不能将‘SQLRETURN SQLDescribeCol(void*, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLUINTEGER*, SQLSMALLINT*, SQLSMALLINT*)’的实参‘3’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In function ‘QSqlField qMakeFieldInfo(const QODBCPrivate*, int)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:611: 错误:不能将‘SQLRETURN SQLDescribeCol(void*, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLUINTEGER*, SQLSMALLINT*, SQLSMALLINT*)’的实参‘3’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual bool QODBCResult::reset(const QString&)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:956: 错误:不能将‘SQLRETURN SQLExecDirect(void*, SQLCHAR*, SQLINTEGER)’的实参‘2’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual bool QODBCResult::prepare(const QString&)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:1308: 错误:不能将‘SQLRETURN SQLPrepare(void*, SQLCHAR*, SQLINTEGER)’的实参‘2’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual bool QODBCResult::exec()’:

../../../sql/drivers/odbc/qsql_odbc.cpp:1531: 错误:‘SQL_C_TCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp:1532: 错误:‘SQL_WLONGVARCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp:1532: 错误:‘SQL_WVARCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp:1545: 错误:‘SQL_C_TCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp:1546: 错误:‘SQL_WLONGVARCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp:1546: 错误:‘SQL_WVARCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual bool QODBCDriver::open(const QString&, const QString&, const QString&, const QString&, int, const QString&)’:

../../../sql/drivers/odbc/qsql_odbc.cpp:1892: 错误:不能将‘SQLRETURN SQLDriverConnect(void*, void*, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT)’的实参‘3’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘void QODBCDriverPrivate::checkUnicode()’:

../../../sql/drivers/odbc/qsql_odbc.cpp:2001: 错误:不能将‘SQLRETURN SQLExecDirect(void*, SQLCHAR*, SQLINTEGER)’的实参‘2’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp:2006: 错误:‘SQL_C_WCHAR’在此作用域中尚未声明

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual QStringList QODBCDriver::tables(QSql::TableType) const’:

../../../sql/drivers/odbc/qsql_odbc.cpp:2285: 错误:不能将‘SQLRETURN SQLTables(void*, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT)’的实参‘8’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual QSqlIndex QODBCDriver::primaryIndex(const QString&) const’:

../../../sql/drivers/odbc/qsql_odbc.cpp:2376: 错误:不能将‘SQLRETURN SQLPrimaryKeys(void*, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT)’的实参‘2’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp:2403: 错误:不能将‘SQLRETURN SQLSpecialColumns(void*, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT)’的实参‘3’从‘short unsigned int*’转换到‘SQLCHAR*’

../../../sql/drivers/odbc/qsql_odbc.cpp: In member function ‘virtual QSqlRecord QODBCDriver::record(const QString&) const’:

../../../sql/drivers/odbc/qsql_odbc.cpp:2503: 错误:不能将‘SQLRETURN SQLColumns(void*, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT)’的实参‘2’从‘short unsigned int*’转换到‘SQLCHAR*’

make[3]: *** [.obj/release-shared/qsql_odbc.o] 错误 1

make[3]: Leaving directory `/home/xxx/vs/work1/qt-everywhere-opensource-src-4.8.4/src/plugins/sqldrivers/odbc'

make[2]: *** [sub-odbc-make_default] 错误 2

make[2]: Leaving directory `/home/xxx/vs/work1/qt-everywhere-opensource-src-4.8.4/src/plugins/sqldrivers'

make[1]: *** [sub-sqldrivers-make_default] 错误 2

make[1]: Leaving directory `/home/xxx/vs/work1/qt-everywhere-opensource-src-4.8.4/src/plugins'

make: *** [sub-plugins-make_default-ordered] 错误 2

从出错log 可以看出是在编译 ../../../sql/drivers/odbc/qsql_odbc.cpp 这个文件时出错了,并且可以看出好像是好的 SQL_*的类型 不认识

所以我想应该是头文件缺少了,然后就找了个 SQL_WVARCHAR 变量找,看哪个头文件定义了这个变量,结果: /unixODBC-2.2.1/include/sqlucode.h  

很明显在编译 odbc、 前应该先安装 odbc 驱动,我安装了, 但 ./../../sql/drivers/odbc/qsql_odbc.cpp 没有引用这个头文件,所以我就在 qsql_odbc.cpp 添加了 

#include "sqlucode.h"

再编译 ok。

这里做个记录,希望对遇到同样问题的朋友有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: