• 8649阅读
  • 7回复

[提问]windows下Qt使用vs编译器环境变量空格问题 [复制链接]

上一主题 下一主题
离线dosmlp
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-30
如果使用vs编译器版本生成的程序小点而且编译速度也快,但是如果要使用一些系统函数,windows的SDK路径是有空格的,会导致出错,大家有什么好办法吗

离线dbzhang800

只看该作者 1楼 发表于: 2014-04-30
这些路径中的空格应该不会造成什么问题。

你不妨把具体错误信息贴出来,如果你不能判定原因的话
离线realfan

只看该作者 2楼 发表于: 2014-04-30
路径是有空格就用引号引起来
离线dosmlp

只看该作者 3楼 发表于: 2014-04-30
回 dbzhang800 的帖子
dbzhang800:这些路径中的空格应该不会造成什么问题。
你不妨把具体错误信息贴出来,如果你不能判定原因的话 (2014-04-30 14:55) 

f:\qt5.2.1_msvc2010\5.2.1\msvc2010_opengl\include\qtcore\qdatetime.h(122) : warning C4003: “min”宏的实参不足
f:\qt5.2.1_msvc2010\5.2.1\msvc2010_opengl\include\qtcore\qdatetime.h(122) : error C2589: “(”:“::”右边的非法标记
f:\qt5.2.1_msvc2010\5.2.1\msvc2010_opengl\include\qtcore\qdatetime.h(122) : error C2059: 语法错误:“::”
f:\qt5.2.1_msvc2010\5.2.1\msvc2010_opengl\include\qtcore\qdatetime.h(122) : warning C4003: “min”宏的实参不足
f:\qt5.2.1_msvc2010\5.2.1\msvc2010_opengl\include\qtcore\qdatetime.h(122) : error C2589: “(”:“::”右边的非法标记
f:\qt5.2.1_msvc2010\5.2.1\msvc2010_opengl\include\qtcore\qdatetime.h(122) : error C2059: 语法错误:“::”


经过测试,加上#include <windows.h>就会报这个错误,去掉就没事
以前有一个程序也是,使用到了winAPI的库,只能在程序中加上#pragma comment(lib,"xxx.lib") 解决
这些使用到windows的东西都在C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A下面,所以我觉得应该是qmake生成Makefile文件的有空格导致的
离线ashe0817

只看该作者 4楼 发表于: 2014-04-30
不要直接包含<windows.h>

应该这样用:#include <qt_windows.h>
离线dosmlp

只看该作者 5楼 发表于: 2014-04-30
回 ashe0817 的帖子
ashe0817:不要直接包含<windows.h>
应该这样用:#include <qt_windows.h> (2014-04-30 15:42) 

原来这样啊
离线dbzhang800

只看该作者 6楼 发表于: 2014-04-30
另一个解决方法是,在pro内加入

DEFINES += NOMINMAX

题外:路径如果有问题,只会导致你找不到头文件或库文件,不会导致你看到的这种编译错误。
离线dbzhang800

只看该作者 7楼 发表于: 2014-04-30
还有一种解决方法是,将 #include <Windows.h> 放置到 #include <QDateTime> 之后
快速回复
限100 字节
 
上一个 下一个