如何在Visual Studio中包含路径?

bas*_*ibe 45 windows include visual-studio

Visual Studio让我发疯,我怀疑自己做错了什么.

这就是我所做的:我很久以前安装了Visual Studio(Pro '08),我安装了Windows SDK(Win 7 x64),有人通过电子邮件发送给我一个项目,但无法构建.

总是,它找不到windows.h.虽然很容易C:\Program Files\Microsoft SDKs\Windows\v7.0\Include在每个项目的项目设置中包含,但我觉得这可能不是正确的方法.有没有办法以某种方式使Visual Studio全局知道这些文件?
我也尝试在path变量中包含上面的目录,但是没有改变任何东西.

此外,它将在同一目录中随机查找windows.h但不能找到winresrc.h.

编辑:
我的机器出了问题.不知何故,Visual Studio认为我的Windows SDK出错了.请参阅已接受的答案和修复评论.

sta*_*low 60

自Visual Studio 2012起,@ RichieHindle解决方案现已弃用.由于VS工作室提示现在声明:

VC++目录现在可用作用户属性表,默认情况下添加到所有项目.

要设置包含路径,您现在必须右键单击项目并转到:

Properties/VC++ Directories/General/Include Directories
Run Code Online (Sandbox Code Playgroud)

截图: 在此输入图像描述

  • 这适用于个别项目.如何为解决方案中的所有项目设置默认路径? (32认同)
  • @TheSHEEEP:如果你不理解需要解决的问题,这是荒谬的.在VS 2012之前,团队中的每个开发人员都必须设置**他们的**IDE来编译任何给定的解决方案.将包含目录移动到项目配置中可以为团队中的每个人解决此问题.坦率地说,[属性表](https://msdn.microsoft.com/en-us/library/669zx6zc.aspx)是一种非常灵活且易于管理的方式来设置共享项目配置. (8认同)
  • 荒谬的是,这个有用的功能已被删除,有利于一些如此复杂的事情,这是一场噩梦...... (3认同)
  • @IInspectable我并不是说它没有用途或有效性。但开发的事实是,当你从事一个项目时,你会花很长一段时间。可能是几年。那么您需要每隔多久...一年设置一次 IDE?多么可怕啊。此外,您将从事具有非常相似的需求和库需求的项目。因此,您只需执行一次,它就会影响所有需要包含该内容的项目。除此之外,只有当路径在用户计算机上有效时,特定于项目的包含路径才能工作。但事实可能并非如此,因此无论如何都必须手动完成。 (2认同)
  • @IInspectable 好吧,自从最新的 Windows 10 以来,管理环境变量不再是一团糟,所以我会给你。不过,我也不会继续和你争论,因为任何不同意你意见的人都一定是“不理解”的白痴。 (2认同)
  • @TheSHEEEP:我们假设您正在使用第三方库的项目.在使用该库的最新版本处理新功能时,还需要维护以前的版本,该版本使用该库的先前版本.如果您对该库位置使用全局设置,则每次来回切换时都必须更改它.而您的构建环境永远不能同时构建2个不同的版本.而且你不可能并排打开2个不同的版本.而现在你正在使用数十个库.这不是规模(事实,不是意见). (2认同)
  • 这是一个非常合适的构建系统,完美运行超过 15 年(同一个项目!!)。不,你似乎没有理解我写的东西。对我来说,使用 VS IDE 是可选的,而不是强制的。现在,随着这一删除,它变得更简单,更没有用处。相反,将这个核心选项留在指定的新项目旁边可能是双赢的。这是 MS 的错误。 (2认同)

小智 23

要恢复VisualStudio 2013和2015中的工作解决方案:

仅将include路径添加到当前项目

Solution Explorer(VisualStudio主窗口的调色板窗口)中,打开项目的快捷菜单,选择Properties,然后在Property Pages对话框的左窗格中,展开Configuration Properties并选择VC++ Directories.可以在那里指定其他包含或lib路径.

它是Stackunderflowuser1741137在上面的答案中所说的.这也是微软在MSDN中解释的内容.

自动为每个新项目添加包含路径

问题是,杰伊·埃尔斯顿在上面的评论中提到了什么,在我看来这是一个非常明显和亟待解决的问题,这里似乎还没有回答.

在VisualStudio中存在常规方法(参见CurlyBrace.com),根据我的经验,这些方法无法正常工作.从某种意义上说,它只运行一次,之后,它不再可扩展,并且可以移除.的做法史蒂夫·威尔金森在StackOverflow上的另一个密切相关的线程,编辑微软工厂XML文件中的"程序文件" -目录可能是一个危险的黑客,因为它不是由微软预计可满足有外国的东西.效果是无法预测的.好吧,我宁愿判断风险不大,但无论如何,使VisualStudio工作的最佳方法至少对其他人来说难以理解.

与之相比,工作正常的是编辑相应的User-XML文件:

C:\ Users \用户名\ AppData \本地\微软\的MSBuild\V4.0\Microsoft.Cpp.Win32.user.props

和/或

C:\ Users \用户名\ AppData \本地\微软\的MSBuild\V4.0\Microsoft.Cpp.x64.user.props

例如:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets">
  </ImportGroup>
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <IncludePath>C:\any-name\include;$(IncludePath)</IncludePath>
    <LibraryPath>C:\any-name\lib;$(LibraryPath)</LibraryPath>
  </PropertyGroup>
  <ItemDefinitionGroup />
  <ItemGroup />
</Project>
Run Code Online (Sandbox Code Playgroud)

目录'C:\ any-name\include'将被添加到当前的include-path和目录'C:\ any-name\lib'到库路径.在这里,我们可以在扩展和删除意义上编辑它并删除所有内容,删除标记的整个内容.

它是VisualStudio本身的原因,它以CurlyBrace描述的常规方式进行.如上所述,它不是以CurlyBrace方式编辑的,而是以XML编辑的方式.

有关更深入的见解,请参阅 Brian Tyler @ MSDN-Blog 2009,这不是很新鲜,但始终是Microsoft链接的内容.

  • 通过将“$(VC_IncludePath);$(WindowsSDK_IncludePath)”添加到“IncludePath”标记中可以部分解决此问题,但此解决方案看起来像是污垢黑客。 (2认同)

Ric*_*dle 22

您可以在此处设置Visual Studio的全局包含路径:

Tools/ Options/ Projects and Solutions/ VC++ Directories/ /Include files

更新(在Visual Studio 2015中): 在此输入图像描述

  • 请参阅我的回复,此菜单现已从VS 2012开始弃用. (22认同)
  • @ChristianSeverin:仍然有人使用 Visual Studio 的旧版本,这个答案与他们相关。正确的解决方法是让巴斯蒂贝接受其他答案之一,这是我要求他们这样做的。 (2认同)