大概是之前安装和使用QT太顺利了,什么都没注意就开始使用了。在使用VS2012开发Qt5.31的程序一段时间以后,虽然好用,但是发现其编译的程序不能在XP上使用,要打补丁才行。不仅VS2012本身要打补丁,而且我使用的一个库也要有相应的区别选择,实在是够麻烦的。何况VS2012本身不能在XP下使用,所以思量着使用VS2005或者VS2008做开发吧,实在没办法VS2010也行,至少家里的XP老机子能用。没想到问题来了:

1. 之前装的是QT5.31 for VS2012,因此使用VS2010怎么编译都报错,害得我以为VS2010有问题,卸载后重装依然如故,浪费我至少2小时。原来是QT库的不同,网上另外下载QT5.31 for 2010安装即可。

2. VS2012自身太霸道,不知道怎么回事覆盖了我VS2010的默认C++编译选项,按照这篇文章改回来即可:
http://stackoverflow.com/questions/13663898/specified-platform-toolset-v110-is-not-installed

3. QT5 Add-in 虽然可以安装给VS2008使用,但是使用这个插件打开任何一个.pro文件都会出现莫名其妙的转换失败问题。而且我后来发现没有QT 5.31 for VS2008的版本,而且网上查了一下QT 5.0 5.1 5.2版本都没有专门的for 2008版本啊,莫名其妙提供这个安装选项干什么。但是隐约记得强行指定QT 2012库也可以编译,以后再回来确认。今天急着要做正式开发。

4. 我自己之前使用VS2005编译了一个QT 4.53的库,很好用,各种书籍的例子都畅通无阻。但是新建一个工程,编译运行没有任何警告。但是把工程库指向QT4.86的时候,就会发出警告,提示宏定义重复了:
1>c:\qt\4.8.6_2008\include\qtcore\../../src/corelib/global/qconfig.h(41) : warning C4005: 'QT_LARGEFILE_SUPPORT' : macro redefinition
1> command-line arguments : see previous definition of 'QT_LARGEFILE_SUPPORT'
使用VS2008新建一个空工程,使用同一个QT4.86库就没有任何问题。

------------------------------------------------------------------------------------
总结:
1. VS2005 + Qt4.53用来学习书上的例子,真是绝美。Qt 4.53是2009年年末发布的,做一般性的工程大概也够了,谁会需要那么多QT新特性啊,一般越是小白越起劲,人家KDE那么大的天文工程都使用QT4做出来了。
这是QT5的新特性列表:http://qt-project.org/wiki/Qt-5Features
2. VS2008 + Qt4.86做QT4的工程,也是没有任何问题,连个警告都没有。
3. VS2010 + Qt5.31做QT5的工程也不错,就是XP上运行太慢,另外别忘了给它装对应的QT5.31 for 2010
4. VS2012 + Qt5.31本来一直都觉得很好用,但是需要通过打补丁,而且是各种补丁,也能解决所有的开发与配置问题,但我不愿意折腾,何况也不能在XP下运行,所以放弃。

我目前这个工程打算迁移到方案2试试,不是自己编译的库,发布的时候应该更可靠一些。除了未来有可能会使用JSON,其它方面不需要任何新特性。如果开发遇到问题,就转到方案3。赶紧行动~

------------------------------------------------------------------------------------

补充1:VS2012使用QT 5.31 for 2010没有任何问题!看来VC的向下兼容做得不错。

补充2:
使用VS2008编译QT程序的时候,总是碰到这样的错误:
1>libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR90D.dll)
在这里
Project Property->Configuration Properties->Linker->Input->Ignore Specific Library
填上:
libcmtd.lib

补充3:
至今没搞明白,如何静态编译QT的应用程序(不是QT自身,但这样有可能需要静态编译QT?),可能是这样设置:
Project Property->Configuration Properties->C/C++->Code Generation->Runtime Library
设置:
Multi-threaded (/MT)
同时忽略(同补充2):
LIBCMT.lib
(注意,Debug和Release版要分别设置一遍)

补充4:
如何简单发行QT的应用程序,使之不再依赖VS开发环境(加上VC的2个DLL应该还是可以的),可能是这样:
http://bbs.csdn.net/topics/310079403
http://support.microsoft.com/kb/148652

补充5:
好好的程序,Debug没问题,Release版发行程序怎么会缺了一部分资源图片呢?

补充6:
1>c:\qt\4.8.6_2008\include\qtcore\../../src/corelib/global/qconfig.h(41) : warning C4005: 'QT_LARGEFILE_SUPPORT' : macro redefinition
1> command-line arguments : see previous definition of 'QT_LARGEFILE_SUPPORT'

在VS2008中也出现了,要想办法去掉。
后续:找到qt\src\corelib\global\qconfig.h文件(双击编译错误就可以找到),找到这行:
#define QT_LARGEFILE_SUPPORT 64
替换成:
#ifndef QT_LARGEFILE_SUPPORT
#define QT_LARGEFILE_SUPPORT 64
#endif

关于QT版本的安装配置的一些困惑的更多相关文章

  1. QT开发环境安装配置教程

    QT开发环境安装配置教程 分类: QT2012-11-29 23:31 35366人阅读 评论(12) 收藏 举报 Linux版的直接在ubutnu软件中心输入QT,安装响应的Designer,Cre ...

  2. centos7: svbversion版本的安装配置+tortoisesvn登录验证

    centos7: svbversion版本的安装配置+tortoisesvn登录验证 命令工具:svnadmin create #创建版本库 hotcopy #版本库热备份 Islocks #打印所有 ...

  3. PyCharm+Qt Designer+PyUIC安装配置教程

    Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...

  4. windows, fast-rcnn CPU版本的安装配置

    一:安装准备 1:caffe的安装配置,本人用的是happynear大神的caffe版本,具体链接https://github.com/happynear/caffe-windows,编译时需要用到p ...

  5. mysql5.7版本免安装配置教程

    自己花了两天时间才搞清楚,希望对新手有一定帮助,有问题可以联系哦! mysql分为安装版本msi,免安装要压缩版本ZIP,下载网址:http://dev.mysql.com/downloads 免安装 ...

  6. Centos7下配置Python3和Python2共存,以及对应版本Ipython安装配置

    1.查看是否已经安装Python Centos7默认安装了python2.7.5 因为一些命令要用它比如yum 它使用的是python2.7.5. 使用python -V命令查看一下是否安装Pytho ...

  7. 运维笔记--SqlServer相关版本&下载&安装&配置远程连接

    下载地址:SqlServer2008为例 SqlServer2008:https://www.microsoft.com/en-us/download/details.aspx?id=1695 Sql ...

  8. Python版本OpenCV安装配置及简单实例

    # 2018-06-03 # 1. Python下载:https://www.python.org/downloads/ 选择对应平台对应版本的的Python进行安装. 2. Python版OpenC ...

  9. linux版本neo4j安装配置教程

    https://blog.csdn.net/weixin_44293236/article/details/89467489

随机推荐

  1. Java类加载机制总结

    关于Java类加载机制的几个基本概念: JDK提供的基本类加载器:引导类加载器(Bootstrap Class Loader)-用于加载JDK中的核心类.扩展类加载器(Ext Class Loader ...

  2. 删除过期备份报错RMAN-06207 RMAN-06208解决方案

    RMAN备份日志中出现了警告 日志文件目录如下: [root@erpdbs rmanback]# ll total 88 -rw-r--r-- 1 oraprod dba 81011 Sep 7 22 ...

  3. CSS——伪类

    在a标签中运用最多: 1.a:link {color: #FF0000} /* 未访问的链接 */ 2.a:visited {color: #00FF00} /* 已访问的链接 */ 3.a:hove ...

  4. html——meta标签、link标签

    <meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部,不包含任何内容.&l ...

  5. angular 零碎

    相关链接 api(需要FQ) ui-router 知乎 作用域 angular 中作用域的概念是一个亮点,由不同的指令.controller等作用域组成的作用域树就是一个app.简单理解一个contr ...

  6. Tomcat服务器安装与第一个jsp网页程序

    1.安装tomcat服务器之前需要,先安装相应版本的jdk,个人理解Tomcat的大部分功能是使用了java的 jdk jar包的. jdk包下载方式网上可以查到 下载完后可以解压到一个指定目录,并在 ...

  7. cookie范例

    GET /locate/api/getLocByIp?key=C6E22B7D480E3312C74EC7EF013E50C5&callback=bowlder.cb._0 HTTP/1.1 ...

  8. 汇编:MSR/MRS/BIC指令

    1.MRS指令MRS指令的格式为:MRS{条件}   通用寄存器,程序状态寄存器(CPSR或SPSR)MRS指令用于将程序状态寄存器的内容传送到通用寄存器中.该指令一般用在以下两种情冴: Ⅰ.当需要改 ...

  9. httpd-vhosts.conf

    ## VirtualHost example:# Almost any Apache directive may go into a VirtualHost container.# The first ...

  10. MySQL中的分页操作结合python

    mysql中的分页操作结合python --分页: --方式1: ;-- 读取十行 , --从第十行读取 往后再读十行 --方式2: offset ; --从第二十行开始读取10行 -- 结合pyth ...