症状
在运行 Microsoft Visual C++ 2008年编译器来编译文件或生成项目时,您会收到以下错误消息︰
错误 C1859︰头文件的名称意外的预编译的头,只需重新运行编译器可能会解决此问题。
此外,此问题仍然出现甚至当编译器再次运行。在正在运行 Windows 7 或 Windows Server 2008 的计算机上创建/使用预编译头编译器选项启用时,会出现此问题。
注意:如果启用/analyze编译器选项可能会频繁遇到此问题的更多。
原因
当启用了创建/使用预编译头编译器选项时,编译器需要的预编译的头文件和相对的模块不会移动各编译间。但是,地址空间布局随机化 (也称为 ASLR) 功能随机重新定位进程中的模块。因此,模块各编译间移动时,将出现错误。
解决方案
修补程序信息
可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。
若要从 Microsoft 开发人员网络 (MSDN) 代码库中下载此修补程序,请访问下面的 Microsoft 网站︰
http://code.msdn.microsoft.com/KB976656
注意:MSDN 代码库显示获取此修复程序的语言。如果看不到列出的语言,这是因为代码库的资源页不可用这种语言。
注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰
http://support.microsoft.com/contactus/?ws=support注意:您可以从以下网站下载此修补程序︰
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=25785注意:此修复程序包还包含的修复程序"C1001: 内部错误 (编译器文件 f:\dd\vctools\compiler\utc\src\p2\main.c,行 182) 的编译器中使用.NET framework 3.5 的时。
系统必备组件
您必须具有 Microsoft Visual Studio 2008 Service Pack 1 要应用此修补程序的安装。
重启要求
不需要重新启动计算机,如果正在使用的 Visual Studio 实例不应用此修复程序之后。
修补程序替换信息
此修补程序不替换任何其他修补程序。
文件信息
此修复程序的英文版具有的文件属性 (或更新的文件属性)在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用
时区
选项卡中
日期和时间
在控制面板中的项。
文件名称 |
文件版本 |
文件大小 |
日期 |
时间 |
---|---|---|---|---|
C1.dll |
15.0.30729.4455 |
677,184 |
10-Dec-2009 |
02:31 |
C1.dll |
15.0.30729.4455 |
828,744 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,202,952 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,213,704 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,348,360 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,504,016 |
10-Dec-2009 |
02:31 |
C1xx.dll |
15.0.30729.4455 |
2,890,568 |
10-Dec-2009 |
02:31 |
解决方法
若要变通解决此问题,请使用下列方法之一:
方法 1
如果启用,则禁用/analyze编译器选项。
方法 2
清理工程。
方法 3
重新启动计算机。
方法 4
禁用创建/使用预编译头编译器选项。
注意:这些方法不能保证正常工作。即使您使用这些方法之一,您可能仍会遇到此问题。
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。
详细信息
地址空间布局随机化的更多信息,请访问下面的 Microsoft 博客文章︰
地址空间布局随机化在 Windows Vista 中有关预编译头错误的详细信息,请访问下面的 Microsoft 博客文章︰