gpt4 book ai didi

c++ - Visual Studio 2012 和 2010 - kernel32.lib, windows.h

转载 作者:可可西里 更新时间:2023-11-01 16:34:40 33 4
gpt4 key购买 nike

我刚刚安装了 Visual Studio 2012 和 Visual Studio 2010。问题是我无法将 2010 年的简单项目转换为 2012 年 - 它们无法链接到 kernel32.lib 等文件或包含 windows 等文件。 H。我的系统还安装了 Windows SDK 7.1。

我曾尝试为我的 x86 和 x64 用户平台弄乱 Property Manager(因为我在那里添加了适当的 $(DXSDK_DIR) 引用),结果却喜忧参半 - 有时它能正常工作,有时它编译但不链接,其他时候它只是停在 windows.h

例如,目前我得到

1>LINK : fatal error LNK1104: cannot open file 'kernel32.lib'

1>Source.cpp(2): fatal error C1083: Cannot open include file: 'windows.h': No such file or directory

(取决于是否包含“windows.h”)仅在 x64 中具有简单的“hello world”类型程序。

Active(Debug)/Active(x64) -> VC++ Directories -> Include Directories 的项目属性中,我现在可以看到 $(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)包含。如果我展开该输入框并单击“编辑”,我会看到:

$(VCInstallDir) = C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\
$(WindowsSDK_IncludePath) = c:\Program Files (x86)\Windows Kits\8.0\Include\um;c:\Program Files (x86)\Windows Kits\8.0\Include\shared;c:\Program Files (x86)\Windows Kits\8.0\Include\WinRT

虽然我的平台工具集 v110 windows.h 位于 c:\Program Files (x86)\Windows Kits\8.0\Include\um\Windows.h(因此应该没有问题)。如果我选择 Windows SDK 7.1 作为平台工具集,一切正常。

除了格式化和重新安装 Windows 之外还有什么解决办法吗?

L.E.如果我用系统内的绝对路径替换 $(variable) 目录,一切正常。我不明白我为什么要这样做,因为我也在与其他人共享该项目。

最佳答案

我知道上面几乎有答案。但是……

问题似乎是当安装了 VS2012 和 VS2010 时,VS2012 的配置无法正常工作。

解决方法是编辑 %home%\AppData\Local\Microsoft\MSBuild\v4.0 中的 props 文件。

这些是对我有用的文件,使用 SDK v8.1。

第一个用于 32 位构建的 Microsoft.Cpp.Win32.user.props:

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludePath>C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\winrt;$(IncludePath)</IncludePath>
<LibraryPath>C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86;$(LibraryPath)</LibraryPath>
<ExecutablePath>C:\Program Files (x86)\Windows Kits\8.1\bin\x86;$(ExecutablePath)</ExecutablePath>
</PropertyGroup>
</Project>

现在用于 64 位构建的 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">
<PropertyGroup>
<IncludePath>C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program Files (x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\winrt;$(IncludePath)</IncludePath>
<LibraryPath>C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64;$(LibraryPath)</LibraryPath>
<ExecutablePath>C:\Program Files (x86)\Windows Kits\8.1\bin\x64;$(ExecutablePath)</ExecutablePath>
</PropertyGroup>
</Project>

我希望这可以帮助其他人解决这个问题,我还没有在其他任何地方找到解决方案。

关于c++ - Visual Studio 2012 和 2010 - kernel32.lib, windows.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426740/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com