官方的Qt 只有vc10以上的版本 若是想vc9 只能自己编译 so 开始干 搜索资料 1)vc9不能支持webkit的编译 直接删除掉 2)有部分地方 vc9默认支持LONG转ULONG 需要自己改代码 3)需要OPENSSL 4)需要python3.4.3 5)需要activePerl开工 1。下载安装activeperl 2。下载安装python3.4.3 3。编译openssl 0.9.8k perl Configure VC-WIN32 –prefix=C:\Build-OpenSSL-VC9-32 ms\do_ms nmake -f ms\nt.mak nmake -f ms\nt.mak install 4。开始config Qt5 一个bat搞定
复制代码
附上文中改掉的cpp文件 找到对应位置自行修改 文件路径为qtmultimedia\src\plugins\directshow\camera\dscamerasession.cpp
复制代码
完工 从此告别恼人的xp问题
按照你的方法编译5.5,部分模块编译成功,一部分出错(qttools 出错,其他依赖它的模块也编译不过去),错误如下,有谁知道什么原因?查了很久没查到什么原因导致的。 D:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE\xutility(263) : error C2678: 二进制“<”: 没有找到接受“const QString”类型的左操作数的运算符(或没有可接受的转换) f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qchar.h(533): 可能是“bool operator <(QChar,QChar)”[通过使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qbytearray.h(599): 或 “bool operator <(const QByteArray &,const QByteArray &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qbytearray.h(601): 或 “bool operator <(const QByteArray &,const char *)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qbytearray.h(603): 或 “bool operator <(const char *,const QByteArray &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(625): 或 “bool operator <(const QString &,const QString &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(694): 或 “bool operator <(const char *,const QString &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(701): 或 “bool operator <(const char *,const QStringRef &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(1121): 或 “bool operator <(QLatin1String,QLatin1String)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(1178): 或 “bool operator <(const char *,QLatin1String)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(1504): 或 “bool operator <(const QStringRef &,const QStringRef &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qcollator.h(72): 或 “bool operator <(const QCollatorSortKey &,const QCollatorSortKey &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qelapsedtimer.h(80): 或 “bool operator <(const QElapsedTimer &,const QElapsedTimer &) throw()”[使用参数相关的查找找到] .\qhelpsearchindexwriter_clucene.cpp(329): 或 “bool fulltextsearch::clucene::operator <(const fulltextsearch::clucene::QTextHtmlEntity &,const QString &)”[使用参数相关的查找找到] f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(632): 或 “bool QString::operator <(QLatin1String) const” f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(680): 或 “bool QString::operator <(const char *) const” f:\qt\qt5\qtbase\include\qtcore\../../src/corelib/tools/qstring.h(687): 或 “bool QString::operator <(const QByteArray &) const”
由于std::lower_bound导致的问题,已解决,方法如下: 在qttools\src\assistant\help\qhelpsearchindexwriter_clucene.cpp增加如下代码:
复制代码
在qt3d\src\render\backend\jobs\renderviewjobutils_p.h修改如下代码:
复制代码
唯一的缺陷是c++11支持不够好