用于x64平台的VC ++ 2010无法识别的符号; $(WindowsSDK_LibraryPath_x64)

时间:2013-09-09 23:39:03

标签: visual-c++

我重新安装了VStudio2010,遇到了与thread相同的问题。

基本问题是无法链接x64平台,链接器抱怨找不到kernel.lib。

如提供的链接中所述,我可以通过手动添加缺少的lib并包含路径来解决它,但是通过查看ConfigurationProperties-> VC ++目录上的值,已经有一个已定义的符号$(WindowsSDK_LibraryPath_x64 )没有它的宏值(更清楚的是,符号列在继承的值中但从未在宏扩展中定义。)

显然,这个符号被认为是用作x64平台的起点(我猜这是它作为魅力之前的工作方式),但由于某种原因,它无法通过安装声明为宏。 / p>

那么问题是,为IDE定义的所有符号在哪里?有没有人劫持这个符号来解决这种安装问题。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题,虽然我仍然不确定它的来源是什么,为什么VStudio安装程序首先无法正确设置它?

您需要根据您的安装添加两个具有适当值的注册表字符串(在我的情况下为C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Include& Lib \ x64)

Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@IncludeFolder
Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@LibFolder

并将这两行添加到文件Microsoft.Cpp.x64.v100.props中,引用注册表项,此解决方案也适用于v7.1 Sdk

<WindowsSDK_IncludePath Condition="'$(UseEnv)' != 'true'">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@IncludeFolder)     </WindowsSDK_IncludePath>
<WindowsSDK_IncludePath Condition="'$(WindowsSDK_IncludePath)' == ''">$(WindowsSdkDir)Include</WindowsSDK_IncludePath>

<WindowsSDK_LibraryPath_x64 Condition="'$(UseEnv)' != 'true'">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@LibFolder)</WindowsSDK_LibraryPath_x64>
<WindowsSDK_LibraryPath_x64 Condition="'$(WindowsSDK_LibraryPath_x64)' == ''">$(WindowsSdkDir)Lib\x64</WindowsSDK_LibraryPath_x64>

在此更改之后,宏将显示在LibDir和IncludeDir的列表中,并且x64编译将起作用。 如果有人安装了带有默认SDK7.0A的VStudio2010并且工作正常,那将是很好的参考。