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_IncludePath
到 cl.exe
没有什么特别之处。
通用 CRT 的新建项目向导模板使用该名称的 MSBuild 变量(与环境变量或 shell 变量不同)来计算要传递给 cl.exe
的命令行。
因为您是手动调用编译器,所以您应该只在该目录中添加一个/I
开关,而不必担心编译器无论如何都不会寻找的任何环境变量。
【讨论】:
以上是关于windows vc++ 如何使用 UniversalCRT_IncludePath 以及如何使其在 cl.exe 中工作的主要内容,如果未能解决你的问题,请参考以下文章
windows vc++ 如何使用 UniversalCRT_IncludePath 以及如何使其在 cl.exe 中工作
如何在没有 Windows 安装程序的情况下安装 vc++ 可再发行组件
如何在 VC++ 中禁用 Windows TCP/IP 堆栈 [以编程方式]