Windows7配置Qt5.7.1开发环境
我觉得Win7就已足够,不想升级到Win8或Win10,但这个操作系统毕竟还是有点老了。预编译的qt-opensource-windows-x86-msvc2013_64-5.7.1.exe并不是“即装即用”,还需要进行一些设置。
环境
- Windows 7 SP1 旗舰版, 64bit
- Visual Studio Ultimate 2013
- Qt5(qt-opensource-windows-x86-msvc2013_64-5.7.1.exe)
问题
使用默认配置安装Qt5开发环境后,使用Qt Creator新建Qt Console Application
,构建出现如下错误:
不知道是不是因为撰写本文时我的系统已不再“干净”,记得好像还出现过找不到windows.h之类的错误。总之,新建的Qt工程无法通过编译。
解决方案
显然,系统中是存在kernel32.lib这个文件的,在C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64目录下就有一份,于是在工程设置中修改LIBS
变量定义:
按照类似的思路,最终对工程设置的修改包括以下几项:
添加_USING_V110_SDK71_
宏定义是为了避免XXX重定义警告。这是我根据编译输出的提示,发现某个头文件对该宏进行了检测,在定义了该宏的情况下则不定义XXX而强行添加的。经过以上修改,工程终于可以编译通过了,运行也没有问题。
为了避免对每个新建工程都重复以上同样的修改,可以把这些修改合并到系统级的配置文件。经过查找,修改D:\Qt\Qt5.7.1\5.7\msvc2013_64\mkspecs\win32-msvc2013\qmake.conf是有效的,修改后的文件如下:
解释
我知道这是一种非官方的修改方:这不应该是事情的正确运行方式。在stackoverflow网站上也只是找到一些类似的问题,心里总觉得不太踏实。尤其是对添加_USING_V110_SDK71_
这个宏定义,不知有何副作用。
发现如果不做任何更改,使用vs2013导入pro文件也无法编译,但是修改工程设置中的Platform Toolset
后就可以:
应用该设置后展开C/C++选项卡下的Preprocessor页,发现也定义了_USING_V110_SDK71_
,并且将windows库的路径设置为之前我向LIBS
添加的路径:
似乎之前解决方案的效果,相当于在vs2013中指定使用v120_xp
这个platform toolset。不算是完美的解释,至少也有了一个交代吧。
终极解决方案
Visual Studio 2013在Windows7操作系统进行Windows C++开发需要安装Windows SDK 8.1!即使我的vs2013安装包是4.8GB的Ultimate with sp5版本,依然不是完整的。据说如果在联网的情况下安装vs2013,相关SDK的下载安装会自动进行。
微软为这个sdk提供了在线安装程序,启动后可以选择在本机安装,或是下载后在其它计算机安装。下载后的文件约600多兆,目录结构如下:
运行StandaloneSDK/sdksetup.exe进行离线安装,装好以后恢复Qt默认设置,尼玛,no problem。并且安装了这个把QtCreator不能调试的问题也解决了。