包含路径在Visual Studio中是如何工作的?

isr3a4wc  于 2022-12-30  发布在  其他
关注(0)|答案(8)|浏览(122)

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放在了错误的位置。请参阅已接受的答案和评论以获取修复程序。

svgewumm

svgewumm1#

自Visual Studio 2012起,@RichieHindle解决方案现已弃用。VS studio提示符现在声明:
VC++目录现在可以作为默认情况下添加到所有项目的用户属性表使用。
要设置包含路径,您现在必须右键单击项目并转到:

Properties/VC++ Directories/General/Include Directories

截图:x1c 0d1x

hxzsmxv2

hxzsmxv22#

此答案仅适用于早期版本的Visual Studio -请参阅有关现代版本的最新答案。

您可以在此处设置Visual Studio的全局包含路径:
一个月一次/一个月一次/一个月二次/一个月三次/一个月四次

avwztpqn

avwztpqn3#

要在VisualStudio 2013和2015中继续使用解决方案:

仅向当前项目添加包含路径

在 * 解决方案资源管理器 *(VisualStudio主窗口的调色板窗口)中,打开项目的快捷菜单并选择"属性",然后在"属性页"对话框的左窗格中,展开"配置属性"并选择"VC ++目录"。在此可以指定其他include或lib路径。
这就是 * Stackunderflow * 和 * user1741137 * 在上面的回答中所说的,也是微软在MSDN中解释的。

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

这是一个问题,杰伊·埃尔斯顿在上面的评论中问了什么,在我眼里什么是一个非常明显和迫切的问题,什么似乎在这里还没有答案。
在VisualStudio中有一些常规的方法来完成此操作(见CurlyBrace.com),在我的经验是什么工作不正常。在这个意义上,它只工作一次,此后,它不再是可扩展的,也不再是可移动的。Steve Wilkinson的方法在另一个密切相关的线程的StackOverflow,编辑微软工厂XML文件在'程序文件'目录可能是一个危险的黑客,因为微软并不期望在那里遇到外国的东西。效果是潜在的不可预测的。嗯,我宁愿判断它的风险不大,但无论如何,最好的方法,使VisualStudio的工作难以理解,至少对别人来说。
与相比,运行良好的是编辑相应的User-XML文件:
C:\用户\用户名\应用程序数据\本地\微软\微软内部版本\v4.0\Microsoft.Cpp.Win32.user.props
或/及
C:\用户\用户名\应用程序数据\本地\微软\微软内部版本\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>

其中目录'C:\any-name\include'将被添加到当前的include-path中,目录'C:\any-name\lib'将被添加到库路径中。在这里,我们可以在扩展和删除的意义上编辑它,并将其全部删除,删除标记的整个内容。
这就是VisualStudio本身的组成部分,它以 * CurlyBrace * 描述的常规方式进行编辑。正如前面所说,此后它不再以 * CurlyBrace方式 * 进行编辑,而是以XML编辑方式进行编辑。
欲了解更多信息,请参阅Brian Tyler@MSDN-Blog 2009,这无疑不是很新鲜,但始终是微软正在链接的内容。

kh212irz

kh212irz4#

如果您只是尝试更改项目的包含路径,而不是更改所有解决方案的包含路径,请在Visual Studio 2008中执行以下操作:右键单击解决方案导航器中的项目名称。从弹出菜单中选择“属性”。在属性页对话框中选择“配置属性”-〉“C/C++/General”。单击“附加包含文件”标签旁边的文本框并浏览适当的目录。选择“确定”。
令我恼火的是,最初提出的问题的一些答案并不适用于所提到的Visual Studio版本。

oo7oh9g9

oo7oh9g95#

要成功使用Windows SDK,您不仅需要使包含文件可用于您的项目,而且还需要库文件和可执行文件(工具)。要设置所有这些目录,您应该使用WinSDK Configuration Tool

a2mppw5e

a2mppw5e6#

这个答案对于那些使用非标准IDE(即Qt Creator)的人很有用。
至少有两种非侵入式方法可以通过环境变量将额外的 *include路径 * 传递给Visual Studio的cl.exe

  • INCLUDE环境变量设置为;-所有 *include路径 * 的分隔列表。它将覆盖所有include,包括标准库路径。不推荐。
  • CL环境变量设置为以下值:/I C:\Lib\VulkanMemoryAllocator\src /I C:\Lib\gli /I C:\Lib\gli\external,其中/I密钥的每个参数都是附加的 * 包括路径 *。

我成功地使用了最后一个。

umuewwlo

umuewwlo7#

对我来说,这个问题绝对与Visual Studio的版本无关,但事实上,MS在不同版本的库中有很多bug,我构建了自己的主库。所以我不想使用他们的库,也不想使用他们的包含文件(至少不直接使用)。所以我真的想为我所有的项目更改包含目录。

mnowg1ta

mnowg1ta8#

您需要确保并具备以下条件:

#include <windows.h>

而不是这个

#include "windows.h"

如果这不是问题所在,那就看看RichieHindle的回答。

相关问题