windows vc++ 如何使用 UniversalCRT_IncludePath 以及如何使其在 cl.exe 中工作

Posted

技术标签:

【中文标题】windows vc++ 如何使用 UniversalCRT_IncludePath 以及如何使其在 cl.exe 中工作【英文标题】:windows vc++ how to use UniversalCRT_IncludePath and How to make it work in cl.exe 【发布时间】:2017-02-11 19:49:04 【问题描述】:

我使用 Windows 10 作为测试服务器,并尝试从 python 和 C++ 的源代码构建。 我通过choco choco windows package manager安装了vcbuild 2015

当我尝试构建源代码时,我发现错误。

E:\downloads\Twisted-17.1.0>cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DWIN32=1 -IC:\Python36\include -IC:\Python36\include /Tcsrc/twisted/test/raiser.c /Fobuild\temp.win-amd64-3.6\Release\src/twisted/test/raiser.obj
raiser.c

c:\python36\include\pyconfig.h(59): fatal error C1083: Cannot open include file: 'io.h': No such file or directory

在我的vc++包含路径中找不到io.h: 但根据段落:Universal CRT

我发现 io.h 文件在我的 C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt 中

然后我发现我的通用 CRT 是空的

C:\WINDOWS\system32>set UniversalCRT_IncludePath
Environment variable UniversalCRT_IncludePath not defined

然后我定义那个环境变量:

E:\downloads\Twisted-17.1.0> set UniversalCRT_IncludePath="C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt"

然后我再次尝试编译源代码,但还是报错:

E:\downloads\Twisted-17.1.0>cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DWIN32=1 -IC:\Python36\include -IC:\Python36\include /Tcsrc/twisted/test/raiser.c /Fobuild\temp.win-amd64-3.6\Release\src/twisted/test/raiser.obj
raiser.c

c:\python36\include\pyconfig.h(59): fatal error C1083: Cannot open include file: 'io.h': No such file or directory

任何人都知道如何使 UniversalCRT_IncludePath 在命令行环境中工作,cl.exe 如何尝试使用该变量并使其包含包含路径的默认 c++。

【问题讨论】:

@HarryJohnston 这不是重复的,我的问题是关于 UniveersalCRT_IncludePath 我错了,对不起。 如果您使用开发人员命令提示符快捷方式,则相关目录将列在INCLUDE 环境变量中。如果您手动设置环境,您大概可以做同样的事情,或者按照 Ben 的建议将目录列为命令行参数。 【参考方案1】:

UniversalCRT_IncludePathcl.exe 没有什么特别之处。

通用 CRT 的新建项目向导模板使用该名称的 MSBuild 变量(与环境变量或 shell 变量不同)来计算要传递给 cl.exe 的命令行。

因为您是手动调用编译器,所以您应该只在该目录中添加一个/I 开关,而不必担心编译器无论如何都不会寻找的任何环境变量。

【讨论】:

以上是关于windows vc++ 如何使用 UniversalCRT_IncludePath 以及如何使其在 cl.exe 中工作的主要内容,如果未能解决你的问题,请参考以下文章

vc如何编程伪造自己的ip

windows vc++ 如何使用 UniversalCRT_IncludePath 以及如何使其在 cl.exe 中工作

如何在没有 Windows 安装程序的情况下安装 vc++ 可再发行组件

如何在 VC++ 中禁用 Windows TCP/IP 堆栈 [以编程方式]

如何区分 MFC(VC++)中的文件夹类型(Windows/FTP)?

Windows8.1如何解决安装VC++2010失败