我有以下名为Temp.cpp
的简单文件:
#include <string>
int main() { return 0; }
我正在尝试使用WDK 7.1在Windows XP免费构建环境中使用以下命令行编译它:
cl.exe /Iinc\api\crt\stl70 /Iinc\crt C:\Temp.cpp
我得到了非常随机的错误,如:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.207 for 80x86
C:\WinDDK\7600.16385.1\inc\api\crt\stl70\iosfwd(202) :
error C2144: syntax error : 'int' should be preceded by ';'
如果我使用stl60
代替stl70
,则错误会消失,但这并不能解决问题。
问题的原因是什么?
更新:我尝试再次卸载并安装WDK,但没有任何改变。 :(
更新2:好的,显然错误是在头文件本身尖叫:_SCL_INSECURE_DEPRECATE
是原因。有人知道如何正确关闭 吗? (如果我只是注释掉这些行,我会在一堆其他宏上得到更多的错误。)
答案 0 :(得分:3)
通过修改标题和猜测来找到答案:
我需要定义_STL70_
。
答案 1 :(得分:0)
你选择哪cl.exe
?如果你的路径碰巧在WDK之前有一个较旧的(VC6)编译器,你会发现这些错误。 VC6无法编译VC7附带的STL
答案 2 :(得分:0)
显然错误是在头文件本身尖叫:
_SCL_INSECURE_DEPRECATE
是原因。有人知道如何正确关闭它吗?
如果您遇到_SCL_INSECURE_DEPRECATE
问题,请尝试设置:
/D_SCL_SECURE_NO_DEPRECATE
但是鉴于错误消息,你看到它听起来像是编译头,其编译器比头支持的更旧(所以这可能不会让你走得太远)。