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

环境描述: 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。

这里做个记录,希望对遇到同样问题的朋友有所帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值