zoukankan      html  css  js  c++  java
  • 关于QT版本的安装配置的一些困惑

    大概是之前安装和使用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:qt4.8.6_2008includeqtcore../../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:qt4.8.6_2008includeqtcore../../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中也出现了,要想办法去掉。
    后续:找到qtsrccorelibglobalqconfig.h文件(双击编译错误就可以找到),找到这行:
    #define QT_LARGEFILE_SUPPORT 64
    替换成:
    #ifndef QT_LARGEFILE_SUPPORT
    #define QT_LARGEFILE_SUPPORT 64
    #endif

  • 相关阅读:
    django路由——关于路由最后斜杠的问题
    django-admin 汉化
    动态绑定属性、方法 以及 __slots__
    type()、获取对象信息
    String,StringBuffer,StringBuilder三种的性能差异
    线程创建的三种方式的比较(继承Thread,Runnable接口,Callable接口)
    单例设计模式
    用Dockerfile来build原理和过程
    etcd和redis
    win10部署docker和mongo
  • 原文地址:https://www.cnblogs.com/findumars/p/3958498.html
Copyright © 2011-2022 走看看