问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VS2012+Qt5编译Qt4的项目,修改到目前的状态,实在解决不了了?未大神帮忙...

发布网友 发布时间:2022-04-25 12:29

我来回答

1个回答

热心网友 时间:2022-04-11 09:54

1. 建立环境变量
QMAKESPEC win32-msvc2010 // 注意
QTDIR S:\QT\4.8.4 // Qt的安装目录
Path S:\QT\4.8.4\bin;
注意: QMAKESPEC 还是 win32-msvc2010 因为如果要改成win32-msvc2012,需要改很多相关的配置。又麻烦又不安全。而且使用win32-msvc2010并不影响我们的结果。

2. 修改 mkspecs\win32-msvc2010\qmake.conf
  将 QMAKE_COMPILER_DEFINES += _MSC_VER=1600 WIN32 当中的1600改成1700

QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t-
改为
QMAKE_CFLAGS = -nologo -Zm200 -Zc:wchar_t

3. 在开始菜单中找到 VS2012 x86 Native Tools Command Prompt 并运行
这一步非常简单但很重要,一定要选择VS2012目录下的bat文件

4. 在控制台中,切换到Qt的安装目录下。使用如下参数进行配置
configure.exe -platform win32-msvc2010 -opensource -debug-and-release -shared -qt-sql-sqlite -plugin-sql-sqlite -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qmake -process -rtti -dbus -webkit -script -scripttools -no-dbus

5. nmake 开始编译。 不过在编译过程中会遇到几个错需要手动修改一下代码。

6. 第一个错误如下:
.\wtf/HashSet.h(180) : error C2664: 'std::pair<_Ty1,_Ty2>::pair(const std::pair<_Ty1,_Ty2> &)' : cannot convert parameter 1 from 'std::pair<_Ty1,_Ty2>' to 'const std::pair<_Ty1,_Ty2> &'
在Qt的Src目录搜索这个HashSet.h
将180行所在的函数以及它下面的函数用下面的代码替换:
template<typename T, typename U, typename V>
inline pair<typename HashSet<T,U,V>::const_iterator, bool> HashSet<T,U,V>::add(const ValueType &value)
{
auto p= m_impl.add(value);
return make_pair(typename HashSet<T,U,V>::const_iterator(p.first), p.second);
}
template<typename Value, typename HashFunctions, typename Traits>
template<typename T, typename HashTranslator>
inline pair<typename HashSet<Value, HashFunctions, Traits>::iterator, bool>
HashSet<Value, HashFunctions, Traits>::add(const T& value)
{
typedef HashSetTranslatorAdapter<ValueType, ValueTraits, T, HashTranslator> Adapter;
typedef typename HashSet<Value, HashFunctions, Traits>::iterator iter_type;
auto& temp = m_impl.template addPassingHashCode<T, T, Adapter>(value, value);
return make_pair((iter_type)temp.first, temp.second);
}
7. 继续 nmake 遇到第二个错误
platform\DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
platform\DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected end of file in macro expansion
这个错误的原因是因为代码里面的非英文的引号造成的。
原始的错误代码如下:
return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
大家注意 <selection> 单词前后的引号。就是它造成编译报错。修改成下面的代码
return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));

8. 再次nmake,好了到这里为止,就剩下漫长的等待了。我一般是睡觉之前编译,一晚上的时间足够了。

9. 补充,有个开源工具叫jom,也是qt官方的,它支持多核编译,可以大大加快编译速度。
  使用的方法也很简单jom –j 8 你有几个核就写几。我是8个核

注意最后两个DLL是VS2012的运行时库,说明我们已经编译成功了!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑分辨率设置多少合适笔记本电脑分辨率多少最佳 各尺寸笔记本电脑的最佳分辨率 2022年高考480到510分能上山东科技大学吗 朋友借了我一万块钱,现在坐牢了怎么还钱? 天王星和海王星虽然看似一对姊妹星,但还是有区别 ...值得收藏吗?现在分别只都多少钱,照片上有一个铜币的 谁能告诉我这是一枚什么样的铜币,值不值钱? 有谁知道这铜币值不值钱,懂家告诉我一下!谢谢 有谁知道这个铜钱的来历 可以进行异地公积金贷款吗 ...没有QApplication因此我使用apt-get安装qt4然后删除了qt5的... qt4.8.5在哪个qtcreator中兼容 vs2013 必须安装qt5以上的吗,能否安装qt4.8.6 c++ gui qt4 可在qt5中编译的源码 vs2008加qt4怎么迁到qt5 没有id而且电影商店无法用怎么办? 如何让qt5 的代码 跑在qt4上 Qt5对比Qt4.8,是不是性能上提升很多 qt5vs2013 能运行qt4的代码吗 苹果手机电影商店不可用是怎么回事? QT4打开QT5中编写的程序出现乱码怎么解决? Qt5如何安装与使用 ubuntu 能同时装QT5 和QT4吗 如何把qt4和qt5同时固定到启动器 最简单易用的Qt 界面库插件 FTStyle Qt4与Qt5如何选择 想学QT,是直接QT5还是先学QT4好 comboBox在qt4和qt5中的区别 骨科护士出科小结! qt4中的头文件与qt5中有哪些不同 骨科实习出科小结范文 ...更新系统突然发现itunes store提示电影商店不可用是怎么回事... 永恒力电动叉车故障码显示E4372是什么意思 用eprime编写内隐联想测试,怎么在被试错误按键后立刻在当前页反馈出一... 计算机的D盘和E盘出现红色叉是什么意思啊? 为什么那么多女人追E叉O? 双叉臂和多连杆有什么区别 蒂森克虏伯电梯te-e客梯老死机关人显示叉号是什么问题? 联想B460e conexant smartaudio hd声卡才能让内置麦克风有声音?我已 ... vivoneo3的运存是多少? 家里客厅的木地板上发现的虫子,是什么原因? 家里木地板上常见多脚虫,是怎么回事? 家里木地板泡水后,生了一些小虫子,会跳,怎么才能灭这些虫子啊,用杀虫... 我的房间是木地板,(豆腐渣工程),发霉了,我床是榻榻米的,墙壁缝里有好多... 潮虫藏在地板砖下面会把地板砖啃空吗 急!家里木地板上有很多白色的小虫子 非常小一大片一大片的!超恐怖... ppt怎样扣图片 木地板墙缝里的潮虫怎么杀死? 微软2007ppt怎么抠图 高德地图收藏的路线改变了还会收藏吗 ps入门学习,有最好的教程么?要通俗易懂的噢